Products | Versions |
---|---|
TIBCO SmartSockets | - |
Not Applicable | - |
Resolution:
The problem here is one of scale. RTserver by default sets aside a buffer *for each* RTclient connection it holds. (twenty clients, twenty buffers). These buffers in RTserver are called the write buffers. The RTserver puts messages in these buffers before pushing them out to the clients. If there is no room to push messages out to the client (this would mean that both the client's 48k socket buffer and server's 48k socket buffer are both full) then the messages remain in this buffer until the client pulls in the messages queued up in the respective socket buffers, which frees space for the RTserver to push more messages.
The write buffers in the server start out at 8K in size and can grow to as large as the client_max_buffer setting (Default value 10MB). If the total size of queued messages exceed the client_max_buffer setting then the RTserver disconnects the client and discards the messages. Therefore in order to handle 100MB messages you will need to increase the client_max_buffer setting in the RTserver to some value greater than 100Mb since at the very least one entire 100Mb message will need to be placed into the write buffer. However, please be aware that this is a global setting which means that potentially the buffer for each client connected to the RTserver could grow to this size which would be reflected as significant amounts of memory growth in the RTserver. Although this may be acceptable for systems where such large messages are only sent occasionally if the receiving client is slow to process it's incoming messages, or the rate at which 100Mb messages are being delivered is high, then even 100Mb may not be enough buffer space since the RTserver may need to buffer multiple 100Mb messages for the same client at the same time. Setting the client_max_buffer option high enough to handle this type of situation should be done with extreme caution and should be thoroughly tested to make sure that RTserver growth will not exceed system resources.