3 followers Follow

How does FunctionService.onMembers(group) make call to multiple members of the group

Let's say I have 16 nodes all belonging to the same group. When I make onMembers call on that group, how does the gemfire make call?
Does it use a thread pool to make calls to other nodes in parallel? If yes, is there a way to configure the amount of threads in that pool?

Hovhannes Antonyan

Please sign in to leave a comment.



We have disabled conserve-sockets setting and I see that sometimes the function call on some nodes gets executed later than on other nodes.
I want to understand where is the time spent, does it take a long time just to open a new connection, maybe ssl handshake takes long time, maybe serializing arguments is the issue, network latency, maybe remote node was performing GC, maybe it takes longer because the function execution thread pool on that node was already full due to executing other functions...

Is there some way to profile the function calls taking long time? Is there a way to get this data per each function call ?

Hovhannes Antonyan 0 votes

The function will be sent to all 16 nodes in parallel.

However, each node has a thread pool of threads for executing functions. So if you have a lot of functions executing in parallel they may be waiting on each other. You can tune that with the system property "DistributionManager.MAX_FE_THREADS". It defaults to something like 16 threads.

The best way to look at the function performance is to enable statistics, and maybe time statistics as well (the gemfire property enable-time-statistics) There are statistics for each function that track the amount of time in the function call.

Dan Smith 0 votes