Hi,

I'm sorry, I'm progressing very slowly on the issue as time permits me.
My new tests again tend to prove Goldspkie has a leak while Webrick hasn't.
This time I loaded my server using a very basic request with no other
Java Integration involved except Golspike itself. I can't see any leak
on Webrick, so it's unlikely the app itself or Rails has got a leak.

I know I should have force the GC with JConsole, but I hadn't time to
do that in my dev env while I couldn't connect to my prod env with
JConsole - I can't understand why that failed by the way!

My server is Tomcat 6.013, java 1.6u2, Linux 2.6.18. I'm on JRuby
head, with last Goldspike public release.

I loaded the server with JMeter, about 10 thread requesting every 3
secs. Almost all request are being answered code 200.

Fresh Tomcat, only a few requests:

Class         Instance Count         Total Size
class [C         241560         10559832
class org.jruby.runtime.ObjectSpace$WeakReferenceListNode
283638         7941864
class [B         114083         6585746
class java.lang.String         230388         3686208
class [I         5143         3370844
class org.jruby.ast.CallNode         91649         3299364
class [Ljava.util.HashMap$Entry;         27502         2687420
class jregex.Term         27845         2673120
class java.util.HashMap$Entry         138551         2216816
class org.jruby.util.ByteList         104350         2191350


Tomcat eating 24% of my Ram after hundreds of requests:
PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
18   0  439m 233m 6320 S 20.0 23.5   6:29.32 java
Resolving 4184874 objects (after jhat)

Class         Instance Count         Total Size
class [C         241560         10559832
class org.jruby.runtime.ObjectSpace$WeakReferenceListNode
283638         7941864
class [B         114083         6585746
class java.lang.String         230388         3686208
class [I         5143         3370844
class org.jruby.ast.CallNode         91649         3299364
class [Ljava.util.HashMap$Entry;         27502         2687420
class jregex.Term         27845         2673120
class java.util.HashMap$Entry         138551         2216816
class org.jruby.util.ByteList         104350         2191350


Tomcat now eating 25% of my Ram after a few dozens of other requests:
PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
16   0  439m 248m 6336 S 32.6 25.0   8:16.24 java
Resolving 4155328 objects (after jhat)

Class         Instance Count         Total Size
class [B         183149         22359030
class [C         308307         11898332
class [I         28122         9874916
class org.jruby.runtime.ObjectSpace$WeakReferenceListNode
267281         7483868
class java.lang.String         302485         4839760
class [Ljava.util.HashMap$Entry;         51167         4525672
class org.jruby.ast.CallNode         118416         4262976
class java.util.HashMap$Entry         229064         3665024
class org.jruby.util.ByteList         166546         3497466


Obviously the Ruby byte arrays are taking a lot of resources. they
might be normal String be they can be leak, still pretty hard to tell.

I'll try while forcing the GC but I fear I can't do that before the
middle of the next week now.

You guys that have deployed Goldspike can promise me you never saw a
leak? This leak has been there since even before JRuby 1.0 and either
on Tomcat 6 and Glassfish v2.

Also what sucks is that if I wait more closer to the server freeze, my
dump is so large that I can't inspect it with JHat (>400 Mo).

Alternatively this could be a JVM misconfiguration but I tried a bunch
of things what you guys are you using to launch your server?

Any help would be appreciated.

Raphaël Valyi.

On 7/18/07, Robert Egglestone <[EMAIL PROTECTED]> wrote:
> I've had a quick run through the GoldSpike code, and can't see anywhere
> that runtimes are referenced other than local variables.
> The runtime pool creates at least "minIdle" runtimes, and will create up
> to "maxObjects". However, as it stands it shouldn't decrease the number
> of runtimes available.
>
> The logs should show "Runtime X loaded" every time a runtime is created.
>
> Cheers,
> Robert
>
>
> Charles Oliver Nutter wrote:
> > Raphaël Valyi wrote:
> >
> >> Hi all,
> >>
> >>
> >> Since even before JRuby 1.0, My JRuby on Rails app never lasted more
> >> than 24 hours in prod env when while being browsed by Google and Yahoo
> >> bots.
> >>
> >> I investigated on this recently, and, while I'm not completely sure,
> >> it seems that JRuby (from 1.0 to head; Java 6u2; Linux 2.6.18) doesn't
> >> leak when using Webrick as a web server (In dev mode I'm using webrick
> >> and never saw any leak while loading my server and profiling/garbage
> >> collecting with JConsole.)
> >>
> >> But with Goldspike, either under Glassfish v2, either under Tomcat 6,
> >> it seems that I'v got a very little memory leak that ends crashing my
> >> server.
> >>
> >> With the JMeter load tool, I was able to fill my RAM (total 1 Go) by
> >> sending as much as several thousands of requests (at 2 Req/sec, all
> >> answered 200). And when letting my server in the WWW, It crashes in
> >> about 24 hours or less but with less request (so may be the
> >> variablitity has some influence).
> >>
> >> I never saw any error in my Ruby log file.
> >>
> >> It seems that the objects eating my RAM a(after jmap and jhat) are
> >> Ruby arrays of integers. I don't know were they do come from, but I'm
> >> quite sure they don't result from my specific code. My session dump is
> >> clean too.
> >>
> >
> > The [I were suspicious but I'm not sure they're the culprit. There's
> > also a large number of constructs related to jregex, which does use [I
> > for various things. Is it possible there's a regex leak somewhere?
> >
> > Other than that...in GoldSpike do runtimes ever go away/get collected if
> > not in use? Are there links from any server-wide state to the runtimes
> > that might keep them from going away?
> >
> > Raphael: Any way you can track how many JRoR runtimes might be spinning
> > up in your process?
> >
> > - Charlie
> > _______________________________________________
> > Jruby-extras-devel mailing list
> > [email protected]
> > http://rubyforge.org/mailman/listinfo/jruby-extras-devel
> >
>
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to