Sudden large buffer growth in RTserver between two RTservers.

Sudden large buffer growth in RTserver between two RTservers.

book

Article ID: KB0085515

calendar_today

Updated On:

Products Versions
TIBCO SmartSockets -
Not Applicable -

Description

Resolution:
This problem can be recreated by connecting two RTservers (A and B) together. Both RTservers A and B have publishing RTclients and Subscribing RTclients. The message flow is such that messages move in both directions between the RTserves
(A<-&gtB).

The reason for the memory growth is as follows. Assume RTserver A has a write buffer filled with 10MB of messages and that the RTserver sends 48K to RTserver B. When the RTserver A conn sends the data to RTserver B the remainder of the write buffer (952K) in RTserver A is shifted down, that being, the remaining data is memoved to occupy the space vacated by the 48K.  RTserver B can also be engaged in the same send/copy routine.  This can cause contention in that the RTserver A and RTserver B conns will be busy constantly coping data rather than servicing their connections (reading from the conn to the other RTserver).

(This problem was addresses in SmartSockets 6.5 . The RTserver conn now maintains multiple buffers (a "queue" of buffers) so that when a buffer reaches a configured size a new buffer is placed on the outbound queue.  The head buffer on the queue is drained before the next buffer is worked on.)

The work around for existing users is the following:

1). add a 3rd RTserver (C) which is connected to both RTservers A and B.
2). redo the connections of RTclients so that
  a). on RTserver A you have publishers but no subscribers.
  b). on RTserver B you have both publishers and subscribers.
  c). on RTserver C you have only subscribers but no publishers.

Traffic now flows A-&gtB, A-&gtC, and B-&gtC but it is never bi-directional (A<-&gtB, A<-&gtC>,B<-&gtC).

Issue/Introduction

Sudden large buffer growth in RTserver between two RTservers.