Hi Friends,
We are support a B2C public facing portal. The sites are rendered using a
Java based CMS.
We are currently facing lot of outage's in our production environment,
where the JVM exits after printing core-dump/heap-dump
After carefully analysis the logs files we concluded that :-
1.) we are using Result set-caching at our application server level and this result-set caching is used for improving the performance of our application.
2.) The result-set are of nearly 300MB in size, and there are multiple such objects in memory of various sizes varying from 34 MB to 300 MB.
3.) These large objects are causing Allocation failure in our Applications server JVM. and Allocation failure occurs even when we have 500MB of free space.
4.) We cannot remove the result-set caching as the performance of the application will go very slow.
As we are in support mode, we cannot afford to do any major design/code change to the application.
I would like to know what
pattern is followed in Industry to handle large resultsets
I happen to speak (For few minutes) with expert
J2EE architect on the fly he suggested that :-
Generally the pattern used for handling large result-set is to go for some OR-Mapping tool like hibernate.
I would like to know if that is the right kind of solution for this problem, as we are using application server cluster will tools like hibernate support cluster environment.
Is OR mapping tools the right solution for handling large result-set.
Can OR mapping be used as alternate for result-set caching.
Is it advisable to re-factor our design using OR-Mapping tools , I understand that OR mapping will have some performance issues,
Will OR mapping help in resolving allocation failure in JVM.
Can hibernate execute on a separate JVM and can it support cluster( Most of the data's are RO (Read only)
Thanks in advance.