cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joe Baldwin <jfbald...@earthlink.net>
Subject Re: Memory Management using Tomcat
Date Wed, 16 Sep 2009 18:49:35 GMT
Caveat: Apparently I am not as well. :)

1.) I looked at the 65M issue.  On my development box (OSX) I set it  
to -Xms128m -Xmx128m (basically arbitrary).  So when I went to the  
remote hosting company, I purchase a similar amount.
	a. However, we are doing *very* little work (lots of product fetches  
and only a few product inserts and updates) and it runs out of memory  
*very* fast which I *assume* means it is my code, but I don't know.
	b. I am doing research and here is a "web recommendation" (for all  
that is worth)
		Whenever possible, Unidata recommends
	-Xmx1500m for 32-bit systems, and -Xmx2048m --Xmx4096m for 64-bit  
systems.
	c. Since the host is 64-bit, I am wondering whether my assumptions  
may be off for 64-bit systems.

2. DataContext: Sorry, but I am getting confused on this one.  I am  
using BaseContext.getThreadObjectContext() based on recommendations (I  
converted all the old DataContext refs to BaseContext, but I don't  
really understand it from reading the docs) and am *not* releasing it  
at the end of session.  Not quite sure of how to do this properly.

3. Don't know how to set the cache to retain N number of objects. I  
experimented with
	query.setPageSize(RowsPerPage);
	query.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
	query.setCacheGroups("product", "ProductList");

This seemed to help quite a bit but I still eventually ran out of  
memory.  I recently removed *all* the SHARED_CACHE and it ran out of  
memory very fast.

Thanks for your input
Joe



On Sep 16, 2009, at 2:25 PM, Mike Kienenberger wrote:

> Caveat: I'm not really an expert on Cayenne memory management.
>
> 1) Are you allocating enough heap memory to the app server to start
> with?   I don't know what the default is these days, but in the old
> days, an application by default only gets 64Mb of memory -- that's
> pretty small.
>
> 2) Are you using a new DataContext per request?  Or at least per  
> session?
>
> 3) I seem to remember that the cache strategy is configurable.  Have
> you configured a cache that only retains N number of objects for a
> suitable value of N?
>
> On Wed, Sep 16, 2009 at 2:11 PM, Joe Baldwin  
> <jfbaldwin@earthlink.net> wrote:
>> Hi,
>>
>> I have asked this question a number of ways but I still have a very  
>> serious
>> problem with Cayenne-specific memory management configuration  
>> associated
>> with Tomcat.
>>
>> The problem with debugging is that given that I have very little  
>> visibility
>> into the Cayenne memory management it is extremely difficult to  
>> debug this
>> using conventional strategies.  Also I am not requesting anything  
>> from the
>> system that is terribly exceptional so I am attempting to use default
>> settings as much as possible.
>>
>> My strategy is to ask the experts for a Cayenne configuration and  
>> standard
>> memory management steps I should take to conform to the new Cayenne  
>> memory
>> management design intentions.
>>
>> Problem:
>> 1. I have essentially a webstore, three tier design with Tomcat,  
>> Cayenne and
>> MySQL.
>> 2. When after only a few queries of products, tomcat freezes up and  
>> reports
>> out of memory errors.
>>
>> I have attempted to configure the caching strategy ask best as I can
>> understand from the docks but this only gets me a few more hours of  
>> usage
>> before the out of memory errors.  (I tried the SHARED_CACHE). The  
>> NO_CACHE
>> strategy is worse.
>>
>> I would appreciate a set of steps (aka a primer) that should handle a
>> website with a lot of fetches of hundreds of data objects (i.e.  
>> products)
>> and very few updates.
>>
>> Note: My gut feeling is that I am not properly managing the data  
>> object
>> array properly and it is leaking memory.
>>
>> I would appreciate any input, but I would first like to know what the
>> minimum require steps are for managing at data object result set  
>> ArrayList
>> so as to properly cache and then properly free the memory after it  
>> is no
>> longer needed.
>>
>> Context: Tomcat, MySQL, Cayenne 3.0M6
>>
>> Thanks,
>> Joe Baldwin
>>
>>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message