Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[jetty-users] Jetty memory leak under load?

Hi all, hopefully someone can help me with this.

I'm seeing my Jetty stand-alone servers chew up available memory under load
(-Xmx4g eventually all gets used).  Based on Java Object histograms, it
seems like the problem has to do with Jetty, or how I have Jetty configured.
Here's the info I have:

Server: Jetty Hightide 7.0.0 (problem occurred before upgrading, tho, previously 6.1.11).
Setup: Stand-alone, running one production Java webapp: Spring 2.5, JSP
Load: ~20-250 req./second over the course of a day, distributed across three server instances on separate machines

Histogram shows large number of Jetty objects being retained at the request level:
# cat /tmp/histo.out | grep jetty
  5:       1683568      121216896  org.eclipse.jetty.http.HttpFields$Field
  6:       1370718       98691696  org.eclipse.jetty.io.View
 14:        550942       39667824  org.eclipse.jetty.io.ByteArrayBuffer
 15:         98505       29945520  org.eclipse.jetty.server.Request
 18:         98505       18124920  org.eclipse.jetty.server.nio.SelectChannelConnector$2
 22:        197325       14207400  org.eclipse.jetty.io.View$CaseInsensitive
 23:         98505       14184720  org.eclipse.jetty.http.HttpParser
 28:         98505       12608640  org.eclipse.jetty.http.HttpGenerator
 29:        116775       12144600  org.eclipse.jetty.server.session.HashSessionManager$Session
 30:         98505       11032560  org.eclipse.jetty.io.nio.SelectChannelEndPoint
 31:         98505        9456480  org.eclipse.jetty.server.Response
 32:         98505        8668440  org.eclipse.jetty.http.HttpURI
 33:         98068        8629984  org.eclipse.jetty.server.HttpConnection$Output
 38:        197010        7880400  org.eclipse.jetty.http.HttpFields
 41:         98505        7092360  org.eclipse.jetty.io.nio.SelectChannelEndPoint$IdleTask
 45:         98505        6304320  org.eclipse.jetty.server.AsyncContinuation
 46:         70473        6201624  org.eclipse.jetty.io.BufferCache$CachedBuffer
 58:         98557        3153824  org.eclipse.jetty.util.Utf8StringBuilder
 59:         98515        3152480  org.eclipse.jetty.util.MultiMap
 60:         98505        3152160  org.eclipse.jetty.server.HttpConnection$RequestHandler
 72:         98502        2364048  org.eclipse.jetty.util.AttributesMap
 87:         24008        1152384  org.eclipse.jetty.servlet.ServletHandler$CachedChain
 101:         11734         563232  org.eclipse.jetty.server.CookieCutter
(--truncated at 10K instance count--)

There are no comparable/suspicious counts for my-domain-level objects.
Based on a session-scoped object, there appear to be about 29K active
sessions when this snapshot was taken, which seems a bit high, but not
inconceivable, given our traffic type (Facebook apps).  There are <100
active requests present at the time of the snapshot.

Seems like maybe old, fulfilled requests are not getting GCed because they are
hanging around in the idle pool?  Any ideas?

Thanks in advance!
nate

Back to the top