Hi Joe,
The fact that you are seeing a spike with 50-100 concurrent users
doesn't surprise me. After your sessions timeout, the memory usage
goes back down. This seems expected to me.
As for my session-based filter, I'm pretty much using what Cayenne
provides. In my web.xml file for the servlet engine (Tomcat in your
case), I have:
<filter>
<filter-name>Cayenne Filter</filter-name>
<filter-class>org.apache.cayenne.conf.WebApplicationContextFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Cayenne Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
To get your context after that:
private ObjectContext objectContext = BaseContext.getThreadObjectContext();
I think the filter actually creates a DataContext, so you could do a cast there.
On Wed, Sep 16, 2009 at 6:07 PM, Joe Baldwin <jfbaldwi..arthlink.net> wrote:
> Michael,
>
> Thank you for your patience on this. This is the worst problem I have
> encountered and I believe that it is probably something I have misunderstood
> (and failed to implement).
>
>> FWIW, I just did a little monitoring with JConsole with my current
>> development setup: Eclipse, Jetty, Cayenne 3.0M6, Tapesty 5.1, MySQL.
>
> Yes I am able to monitor with JConsole on my development machine (but not
> yet on the webhost). With shared cache ON, and testing with 50-100
> concurrent users, it starts out at about 10-15 MB and then spikes to
> 70-100MB. Most of the time after the Tomcat idle period (i.e. 15 min) it GC
> down to about 20MB-15MB.
>
>
>> This new application I'm working on sounds similar to yours. Fairly
>> lightweight. After everything loaded in, I was using 20-21 MB of
>> memory and it stayed steady, even after doing about 100 queries in
>> Cayenne (I tend to pull back 1-7 records per set-of-queries, but
>> closer to 2-3 on average).
>
> The app sounds similar, but my JConsole reports a huge spike which is only
> released after the idle period. (This is with the Cache set to ON.)
>
>
>> I'm using session-based data contexts and
>> on-demand data contexts. The memory footprint was fine and I'm not
>> caching (I go get fresh data every query). I'm not sure why you are
>> seeing the anomaly you are seeing unless you just need a bit more RAM
>> for Tomcat to be stable.
>
> Mike Kienenberger recommended that I handle this via a filter. I must admit
> that I am still not totally comfortable with BaseContext and could have made
> a mistake. I did not want to go in this direction until I am sure that I
> have the blue-print for the correct solution.
>
> So how do I implement you session-based data context configuration. (Please
> send explicit code as it appears that I am just using the default
> BaseContext.)
>
> Thanks,
> Joe
>
>
>
This archive was generated by hypermail 2.0.0 : Thu Sep 17 2009 - 09:19:21 EDT