[Java lista] tomcat 5 thread probléma

chico at tisztanet.hu chico at tisztanet.hu
2009. Feb. 13., P, 13:29:14 CET


Sziasztok!

Tomcat 5 alatt az alábbi üzenet jön néhány órai használat után:

"java.lang.OutOfMemoryError: unable to create new native thread"

A webapp-on belül thread-ek jönnek létre és szűnnek meg ciklikusan,
amelyekben  a rendszer kommunikál a kliensekkel (tudom, nem ajánlott a
webappon belüli thread gyártás, de ez egy régebben írt webapp...).

A rendszer így évek óta működik, 5/12 -es üzemben.
Most viszont a kliensek száma hirtelen 500-600 körülire nőtt (egy
időben), és jött a hiba.
A tomcat/server.xml -ben a maxThreads növelése nem hozott javulást.

A kérdésem: hol kell/lehet állítani/lekérdezni, hogy az
oprendszer/tomcat/jvm?  biztosítson megfelelő számú thread-et?
(a webapp módosítása most nem nagyon lehetséges)

Környezet:
Solaris 10, Java 1.5.0.14, Apache Tomcat/5.5.17
CATALINA_OPTS:
-Dencoding=UTF-8 -Xms32m -Xmx96m
-XX:MaxPermSize=96m -XX:+PrintGCDDtails -XX:NewSize=16m -verbose:gc
-XX:CompileThreshold=30000 -XX:+UseParallelGC -XX:+UseBoundThreads
-Xconcurrentio

A max memória értéket soha sem éri el (ezt már megmérték).

Nekem a hibát reprodukálnom is kellene Linux-os környezetben (Ubuntu),
úgyhogy ha van valakinek ötlete, hogy hogyan lehet ezt megtenni, ne
kíméljen.

Üdv,
Chico

------------------------------------------
A stacktrace:

java.lang.OutOfMemoryError: unable to create new native thread
        at java.lang.Thread.start0(Native Method)
        at java.lang.Thread.start(Thread.java:574)
        at
com.mics.net.dispatcher.client.router.doGet(router.java:608)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at
org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:419)
        at
org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:133)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
        at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)







További információk a(z) Javalist levelezőlistáról