we have deployed Jpivot with mondrain in tomcat5 server The application is working fine with one client. But when more number of people trying to use the application Jpivot is take a lot of memory because it is putting a number of objects to render the results.
we have observed that (for example my Tabular view is having 20 number of rows and Jpivot is taking more then 20 mb of memory) and also when one client is changing the view the memory consumption is getting increased if this is the case what will happen what 100 user will try to use the application. is there any way to stop this.
What version of JPivot are you running?
What OLAP model are you using for JPivot - Mondrian or XML/A? Here is the architectural view...
Using a Mondrian model includes Mondrian in the same JVM as JPivot. Mondrian has a cache in the JVM for storing intermediate results etc. If needed, the cache will grow to the configured size of the JVM, and garbage collection will clear SoftReferences. The cache is used across user sessions, as long as you use the same connect string. The per user memory usage is pretty light - some session state defining the current view.
How your application uses JPivot will effect memory usage - what you hold in the user session etc. What has your multi user testing shown with regard to memory usage?
My application is using openi (1.1.1) integrated with latest JPivot -1.5 and mondrian -2.0.1. I have a cube with (11 Measure, 2 Dimension with 3 Hierarchy each). The total number of row in the DB(DB2) are around 33,00,000. I have deployed Mondrian and OpenI in two different Tomcat servers in different machines.
As Mondrain claims that it caches data in memory but the fact is that it caches views only. As I understand the consumption of memory by Mondrian; hence I have deployed it in a separate boxes.
When more than one user is trying to use the application and going through different views the memory consumption is getting higher in the server where Openi and JPivot are deployed. And finally it is throwing Out of Memory exception. I have two server with 2 GB RAM each, DB2 is running in a different box.
Hence I concluded that JPivot and WCF are caching number of Objects in each user session. As per my understanding JPivot is just rendering the data that comes from Mondrian server. Is it really necessary to keep all these objects in the user session ? I don’t understand the advantages of keeping such large data objects in memory at JPivot end.
Any clarification in this regard is appreciated.
In JPivot, the Result for the last MDX query is cached per user session. Are you dealing with large result sets?
Drillthrough results are a different matter - are these your problem? The OpenI folks have been working to cache drillthrough results - see the OpenI forums.
BTW: Mondrian does cache intermediate results _and_ the details of dimensions.
I'm starting to use jpivot with db2, with same amount of data, how works your implementation with views??? you probe with physical tables??
And i just found a jdbc driver from datadirect, you 've another?? which??
I really hope what you see this message... and thanks for any answer