On Mon, Oct 27, 2003 at 13:29:50 +0100, Remy Maucherat wrote:
> >On Fri, Oct 24, 2003 at 16:01:48 +0200, [EMAIL PROTECTED] wrote:
> >>When everything quiets down, tomcat seems to be unable to service
> >>any http requests. Any attempt to connect to port 10003 with a web
> >>browser eventually causes a "No data in response"-style error message.
> >>At this point it seems the http connector listening on port 10003 has
> >>gone "zombie" on me: 
> >
> >
> >I've figured out what's going wrong.
> >The following exception is printed once on standard out when things
> >fail:
> >
> >java.lang.OutOfMemoryError: unable to create new native thread
> >        at java.lang.Thread.start(Native Method)
> >        at 
> >        
> > org.apache.catalina.connector.http.HttpProcessor.threadStart(HttpProcessor.java:1178)
> >        at 
> >        
> > org.apache.catalina.connector.http.HttpProcessor.start(HttpProcessor.java:1262)
> >        at 
> >        
> > org.apache.catalina.connector.http.HttpConnector.newProcessor(HttpConnector.java:937)
> >        at 
> >        
> > org.apache.catalina.connector.http.HttpConnector.createProcessor(HttpConnector.java:868)
> >        at 
> >        
> > org.apache.catalina.connector.http.HttpConnector.run(HttpConnector.java:1075)
> >
> >I looked into the source for HttpProcessor briefly; perhaps the
> >"thread.start()" on line 1178 or the threadStart() call on line 1262 
> >could be surrounded with a try/catch(OutOfMemoryError), and throw a 
> >LifecycleException?
> 
> Any reason for using this connector ? It's deprecated.
> 
> BTW, once there's an OOM exception, the VM is in an unpredictable state, 
> and must be restarted.
 
If it is of any interest, I have recently started experiencing the same problem 
again, while doing some profiling work on a webapp. 

I'm now running Tomcat 4.1.29 on Linux 2.4.24 (i386) with Sun Java
1.4.2_02. I have also changed server.xml to use the newer Coyote
connectors:

    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
               port="10003" minProcessors="50" maxProcessors="500"
               enableLookups="true" redirectPort="8443"
               acceptCount="10" debug="100" connectionTimeout="60000"
               useURIValidationHack="false" disableUploadTimeout="true" />

When running with the following java options:
 "-Xrunhprof cpu=samples,thread=y;depth=10,cutoff=0,format=a,file=/tmp/log.txt -Xms64m 
-Xmsm1024m"
and "pounding" the webapp with 1000 HTTP requests simulatenously, I got
the following on System.out:

07.jan.2004 09:27:41 org.apache.tomcat.util.threads.ThreadPool$ControlRunnable run
SEVERE: Caught exception executing [EMAIL PROTECTED], terminating thread
java.lang.OutOfMemoryError: unable to create new native thread
        at java.lang.Thread.start(Native Method)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.<init>(ThreadPool.java:630)
        at org.apache.tomcat.util.threads.ThreadPool.openThreads(ThreadPool.java:505)
        at 
org.apache.tomcat.util.threads.ThreadPool.findControlRunnable(ThreadPool.java:324)
        at org.apache.tomcat.util.threads.ThreadPool.runIt(ThreadPool.java:304)
        at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:557)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
        at java.lang.Thread.run(Thread.java:534)

..after which any attempt to connect to the http port (10003 in this
case) results in java holding a half-opened connection in SYN_RECV, 
as shown by "netstat -apeln | grep 10003":

tcp        0      0 0.0.0.0:10003           0.0.0.0:*               LISTEN      1001   
    47392370   27230/java          
tcp        0      0 127.0.0.1:10003         127.0.0.1:41269         SYN_RECV    1001   
    0          -
(and several in CLOSE_WAIT state)

Other threads keep running, so the VM _seems_ stable, except for the
fact that it's no longer possible to connect to the HTTP port.

To me, it seems like it should be possible to recover from this error.
Any comments?



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to