In some perf tests I’ve run lately where I push our app, I’ve noticed
that as the JVM starts to reach the top of its heap Tomcat threads start
to pile up rapidly. I presume that at this stage they are contending for
a Rack runtime and can’t get one. I think that perhaps this is what
ultimately knocks the JVM into out of memory land. Its already short on
memory and is accumulating threads at a rapid rate.
JVM becomes unresponsive with:
Dec 5, 2008 5:21:25 PM
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable run
SEVERE: Caught exception (java.lang.OutOfMemoryError: Java heap space)
executing org.apache.jk.common.ChannelSocket$SocketConnection@89cdd5d,
terminating thread
catalina.2008-12-05.log lines 2340-2371/2371 (END)
The default setting for: jruby.runtime.timeout.sec is 30 seconds. So
threads wait 30 seconds before being rejected.
I’m going to ratchet this value back and see if it helps. I’d rather
fail fast and save the JVM. Another option on Tomcat is putting a
maximum on the # of threads, but this seems more appropriate.
Anyway, my question is what are others doing with this timeout setting?
BTW, we’ve seen nice improvement in perf between 1.1.3 and 1.1.5. See:
–
Mike H.
http://www.csinitiative.com
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email