Reputation: 4578
We started implementing Coherence in our application to improve performance and reduce load on the DB server and reduce web service calls.
We usually experience high CPU usage ( weblogic App server's JVM) during high load, DB servers are usually not an issue.
Other than response time improvement, How would oracle Coherence improve application server's CPU and Heap usage during high load.
1) reduce XML processing as we will start retrieving Java Objects from the cache that are ready to be used rather than having to unmarshall the XMLs.
2) reduce ORM mapping overhead as we won't be mapping table rows to objects for cached data.... 3) What else?
Thanks a lot
Upvotes: 3
Views: 1714
Reputation: 176
Disclaimer - I work for Oracle on Coherence.
Assuming that the CPU load is going to XML marshaling, you should see reduced CPU consumption by placing the resulting objects in a cache. You'll still pay CPU for serialization, but object serialization takes much less CPU - and if you use POF for serialization you'll see even better performance.
If there is any affinity to where the objects are being used, you can take advantage of near caching to avoid going to the network to retrieve cached objects. This will only help if you do more reads than writes.
With Coherence you don't need to throw away your ORM - you can write a CacheStore (or use the JPA CacheStore we ship with OOTB) to transparently read from the database upon cache misses and update the database when the cache is updated. This works best if you're retrieving your ORM objects via primary key.
Without more details on what exactly is taking up CPU (thread dumps are a good low tech way to diagnose this) it's hard to say how much caching will help.
Upvotes: 2