Problem:
- Product Name: VisiBroker
 - Product Version: 6.x and above
 - Product component : Smart Agent (Osagent)
 - Platform/ OS version: All
 
The issue occurs in osagent load balancing in the following scenario:
Client --> Intermediatory Server --> Final Server
The clients request a reference to the intermediatory server and the intermediate server gets a reference to the final server when the client calls the servant. There are multiple intermediate and the final servers running.
The issue is, the reference request that the client makes are load balanced between intermediate servers and the reference request that intermediate servers makes are not load balanced between the final servers. In this case, a few of the final servers are idle, while the rest of the servers are overloaded. If the _bind() requests are in huge numbers, the servers which are overloaded cannot handle the load and eventually results in system instability.
Resolution:
For VisiBroker for C :
Set the "vbroker.orb.cacheDSQuery" to false in the intermediatory servers.
The cacheDSQuery behavior: The DSQuery cache is used only when the Client uses the bind or the rebind mechanism to get an object reference through the Osagent. Once the Client has a valid Server object reference and establishes a connection to the Server, the DSQuery cache is not used for any subsequent calls on that connnection.
This property can be set at the client too. However it has no visible impact in this above scenario if each client process just call bind once, make some invocations and then exit immediately. If the client process do not exit, and it keeps making bind() calls before making invocations, then you should be able see the impact.
For VisiBroker for Java:
The corresponding VBJ property is "vbroker.agent.enableCache". This has to be set to false in the intermediatory servers.
Drawbacks:
When using these properties, there should be some performance degradation during the server object binding stage, since reading the IOR from an internal cache is much faster then contacting the osagent via the network to retrieve an alternate server IOR.
However, there should not be any performance degradation during the normal server method invocations. Normally, the concern would be about the invocation performance rather then the bind() performance.
#cacheDSQuery
#VisiBroker
#loadbalancing
#Performance
#osagent
#SmartAgent
#Security
#enableCache