Hi,

I have run some tests using two different clients, a Java one and a C++ 
one, both with single hop enabled, maxConnections not limited (set to 
-1), accessing a partitioned region, and have observed the following:

- If the amount of operations sent to the Geode cluster is not very 
high, the number of connections from the client to the servers remains 
constant and reasonably low (the number appears to be (number of threads 
in the client * number of servers in the Geode cluster)).

- If the amount of operations sent to the Geode cluster is very high 
then the behavior seems different between the Java and the C++ client:

     * With the Java client, the number of connections seems to be 
bounded to a maximum that seems to be (number of threads in the client * 
number of servers) although there is a continuous thrashing of 
connections (connections closed and opened continuously). According to 
my observations, the reason why connections are closed is because the 
server considers them idle.

     * With the C++ client, the number of connections seems to grow 
indefinitely and quite quickly. In this case, the amount of connections 
closed (if any) seems very small. This is a problem because sooner or 
later the client runs out of file descriptors.

I have some questions regarding the observed behavior:

- What fires the creation of new connections in the Java case? Is there 
a limit for the number of connections opened (there seems to be one)?

- In the Java case, what could be causing that some connections are idle 
given that the amount of operations sent is very high?

- In the C++ case, what fires the creation of new connections?

- In the C++, is it normal that the number of connections grows 
indefinitely?

- Is there a reason for the two client APIs to behave differently (in 
the Java one connections expire while in the C++ connections do not expire)?


Thanks in advance,

Alberto


Reply via email to