There are checks on the number of pool buffers used by custom servers. Their purpose is to prevent a custom server from using up all the buffers in the system, but they can also cause problems if not set correctly.
The two controlling variables are CA_THRESHOLD_PERCENTAGE and max_pool_buffers, shown in Figure 1:
Buffer usage is monitored:
The custom server controller rejects the OpenHostServerLink action if:
The custom server router checks that the total number of buffers owned by this custom server is less than max_pool_buffers for this custom server.
If this check fails, the SendData action is rejected, and the error “Pool Buffer Threshold Reached” is logged. Note that this is the same error as two of the OpenHostSeverLink conditions above, but you can distinguish this condition from the others because it specifies CA_ROUTER rather than CA_check_system_thresholds.
The most common reason for a custom server using up buffers is that it has stopped servicing its message queue, but channel processes are still sending requests to it.
A well-behaved custom server will not lose buffers. However, if it bypasses the normal behavior at termination, for example, exiting from its termination function rather than returning, or by installing its own SIGINT handler, then Blueworx Voice Response will not be able to clean up after it, and buffers can be lost.
Use the DTmon -s command to obtain a snapshot of custom server buffer usage. For more information on DTmon, see the Blueworx Voice Response for AIX: Managing and Monitoring the System information.