Performance impact of going via Proxy seems high?
769299Aug 10 2011 — edited Aug 15 2011Just wondered if anyone had tested the impact of a client app. that joins the cluster directly, versus one that goes via a Proxy?
I've been testing retrievals of Position objects (roughly 300 bytes each) on 4 server cluster (2 Xeon Quads in each). The Positions cache is a distributed cache and the objects are stored in POF format. For queries that return few positions (i.e. 10s/100s), the performance seems pretty comparable, whether you go via the Proxy or not. However, as I query more Positions, the Proxy figures get much slower (50-90%), and seem much more volatile.
For example, here's the timings for queries without the proxy:
Total Positions Time(ms)
24598.....68
38579.....294
97781.....385
106151.....449
107317.....433
107518.....436
And here's the same queries via the Proxy (Proxy running on the same servers, same LAN, as is the client):
Total Positions Time(ms)
24598.....290
38579.....421
97781.....754
106151.....591
107317.....787
107518.....604
As you can see, the figures are much slower in places, and also much more volatile (look at the last two rows, for example.) CPU stats are low, and I've configured plenty of RAM in the JVMs for both the cache servers and proxies. I've also got plenty of service threads configured on both the Cache Service and the Proxy service (although I'm only running one test at a time, so this shouldn't be a factor anyhow.)
I've looked through the "Best Practice" section of the Docs for proxies, and I'm following all the hints given in it. Still, I'm very surprised by how much of a hit the Proxy seems to be introducing. Is this normal? Or is there something I can try to improve the situation?
Cheers,
Steve