High heap usage rate

22 views
Skip to first unread message

Tom Chiverton

unread,
Mar 28, 2013, 6:09:26 AM3/28/13
to fusion...@googlegroups.com
We have a relatively small application, with around 5 req/s average, normal peaks of around 20 req/s and sometimes around 40 or 50 req/s.

We are seeing high memory usage; I will be trying to get a heap dump the next time(*) this happens to see what they all are, but in the mean time was looking at the Heap/non-heap graph, and it's a bit odd.
In the space of 1m we burn through around 300meg heap, then I guess garbage collection kicks in and it's released.

We are not (intentionally) creating 300meg of objects, strings etc on a request; does anyone have any idea what this might be ?
I vaguely recall seeing recently an update (ColdFusion, Java, FR ?) that talked about a problem that manifested as this sort of pattern of heap usage, but can't seem to google it up again.

Tom
(*) I have one from a little after server start up to compare against. There is nothing of note in it

David Stockton

unread,
Mar 28, 2013, 7:01:32 AM3/28/13
to fusion...@googlegroups.com
Hello Tom,

Have you considered this...
5req/sec average over 60s = 300req/min
That's 1MB per request which doesn't sound that high to me if you're doing a few DB calls. HOWEVER, that assumes that 1MB per request is being promoted into the old gen heap area. It could be something simple like your requests take quite a long time to run (what's your average request time?) and therefore their memory gets promoted to old gen. It's then normal that the heap would hold onto this memory until the full GC.

As ususal, our consulting services are available to help with this kind of issue.

Best regards,
David Stockton
Fusion Team




--
You received this message because you are subscribed to the Google Groups "FusionReactor" group.
To unsubscribe from this group and stop receiving emails from it, send an email to fusionreacto...@googlegroups.com.
To post to this group, send email to fusion...@googlegroups.com.
Visit this group at http://groups.google.com/group/fusionreactor?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Tom Chiverton

unread,
Mar 28, 2013, 7:37:05 AM3/28/13
to fusion...@googlegroups.com
On Thursday, March 28, 2013 11:01:32 AM UTC, David Stockton wrote:
That's 1MB per request which doesn't sound that high to me if you're doing a few DB calls. HOWEVER, that assumes that 1MB per request is being promoted into the old gen heap area. It could be something simple like your requests take quite a long time to run (what's your average request time?) and therefore their memory gets promoted to old gen. It's then normal

Would have been helpful if I'd mentioned that - they are about 100ms average, though we sometimes get a large reporting request or something that may run for minutes...

Tom

Dave DeVol

unread,
Mar 28, 2013, 12:39:01 PM3/28/13
to fusion...@googlegroups.com
I've had some luck with jProfile identifying code responsible for high memory use, might want to try that.. I think they have a free 14 day trial you could play with. Also our app sounds similar to yours and we've been happy with these jvm arguments:
 
# Arguments to VM
java.args=-server -Xms12g -Xmx12g -XX:PermSize=512m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled

 
-Dave
 

 

--
Reply all
Reply to author
Forward
0 new messages