You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2007/03/02 18:40:00 UTC

DO NOT REPLY [Bug 41749] New: - Tomcat with APR using SSL spins CPU at 100%

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=41749>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=41749

           Summary: Tomcat with APR using SSL spins CPU at 100%
           Product: Tomcat 5
           Version: 5.5.20
          Platform: Macintosh
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Connector:Coyote
        AssignedTo: tomcat-dev@jakarta.apache.org
        ReportedBy: jkessinger@awarepoint.com


I have a problem about once a week with a server which primarily serves HTTPS.
The server continues to respond, but it pegs the CPU. The only remedy is to
restart tomcat. 

The configuration is:

Redhat EL 4.
Dual AMD Operteron Processors.
1GB.
2.6.9-42.0.2.ELsmp
openssl-0.9.7a-43.14
apr 1.2.8
tomcat-native 1.1.8
tomcat 5.5.20
thawte issued certificate.

Here's the stacktrace for the only two threads which are doing any work. All
other threads are waiting.

"http-8443-14" daemon prio=1 tid=0x090c0630 nid=0x1cdc runnable
[0x883fe000..0x883feeb0]
	at org.apache.tomcat.jni.Socket.recvbb(Native Method)
	at
org.apache.coyote.http11.InternalAprInputBuffer.fill(InternalAprInputBuffer.java:817)
	at
org.apache.coyote.http11.InternalAprInputBuffer$SocketInputBuffer.doRead(InternalAprInputBuffer.java:852)
	at
org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:115)
	at
org.apache.coyote.http11.InternalAprInputBuffer.doRead(InternalAprInputBuffer.java:771)
	at org.apache.coyote.Request.doRead(Request.java:418)
	at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:284)
	at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:404)
	at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:299)
	at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:192)
	at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(Unknown Source)
	at sun.nio.cs.StreamDecoder$CharsetSD.implRead(Unknown Source)
	at sun.nio.cs.StreamDecoder.read(Unknown Source)
	- locked <0xa22ee680> (a java.io.InputStreamReader)
	at java.io.InputStreamReader.read(Unknown Source)
	at org.apache.xerces.readers.CharReader.fillCurrentChunk(CharReader.java:167)
	at org.apache.xerces.readers.CharReader.<init>(CharReader.java:85)
	at
org.apache.xerces.readers.DefaultReaderFactory.createCharReader(DefaultReaderFactory.java:186)
	at
org.apache.xerces.readers.DefaultReaderFactory.createReader(DefaultReaderFactory.java:140)
	at
org.apache.xerces.readers.DefaultEntityHandler.startReadingFromDocument(DefaultEntityHandler.java:493)
	at org.apache.xerces.framework.XMLParser.parseSomeSetup(XMLParser.java:314)
	at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1097)
	at javax.xml.parsers.SAXParser.parse(Unknown Source)
	at
org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
	at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
	at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
	at org.apache.axis.server.AxisServer.initSOAPConstants(AxisServer.java:345)
	at org.apache.axis.server.AxisServer.invoke(AxisServer.java:279)
	at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
	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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
	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.Http11AprProcessor.process(Http11AprProcessor.java:833)
	at
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:639)
	at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1285)
	at java.lang.Thread.run(Unknown Source)

"http-8443-10" daemon prio=1 tid=0x084fac80 nid=0x8d8 runnable
[0x8867d000..0x8867e130]
	at org.apache.tomcat.jni.Socket.recvbb(Native Method)
	at
org.apache.coyote.http11.InternalAprInputBuffer.fill(InternalAprInputBuffer.java:817)
	at
org.apache.coyote.http11.InternalAprInputBuffer$SocketInputBuffer.doRead(InternalAprInputBuffer.java:852)
	at
org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:115)
	at
org.apache.coyote.http11.InternalAprInputBuffer.doRead(InternalAprInputBuffer.java:771)
	at org.apache.coyote.Request.doRead(Request.java:418)
	at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:284)
	at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:404)
	at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:299)
	at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:192)
	at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(Unknown Source)
	at sun.nio.cs.StreamDecoder$CharsetSD.implRead(Unknown Source)
	at sun.nio.cs.StreamDecoder.read(Unknown Source)
	- locked <0x91572498> (a java.io.InputStreamReader)
	at java.io.InputStreamReader.read(Unknown Source)
	at org.apache.xerces.readers.CharReader.fillCurrentChunk(CharReader.java:167)
	at org.apache.xerces.readers.CharReader.<init>(CharReader.java:85)
	at
org.apache.xerces.readers.DefaultReaderFactory.createCharReader(DefaultReaderFactory.java:186)
	at
org.apache.xerces.readers.DefaultReaderFactory.createReader(DefaultReaderFactory.java:140)
	at
org.apache.xerces.readers.DefaultEntityHandler.startReadingFromDocument(DefaultEntityHandler.java:493)
	at org.apache.xerces.framework.XMLParser.parseSomeSetup(XMLParser.java:314)
	at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1097)
	at javax.xml.parsers.SAXParser.parse(Unknown Source)
	at
org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
	at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
	at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
	at org.apache.axis.server.AxisServer.initSOAPConstants(AxisServer.java:345)
	at org.apache.axis.server.AxisServer.invoke(AxisServer.java:279)
	at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
	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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
	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.Http11AprProcessor.process(Http11AprProcessor.java:833)
	at
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:639)
	at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1285)
	at java.lang.Thread.run(Unknown Source)

Unfortunately I do not have a core yet to see where we are down on the native side. 

I moved to tomcat-native 1.1.8 only after experiencing this problem with 1.1.3.
Originally I had this same issue with tomcat-5.5.17 and whatever tcnative
shipped with 5.5.17

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


DO NOT REPLY [Bug 41749] - Tomcat with APR using SSL spins CPU at 100%

Posted by bu...@apache.org.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=41749>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=41749


fgieseler@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Platform|Macintosh                   |All




-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


DO NOT REPLY [Bug 41749] - Tomcat with APR using SSL spins CPU at 100%

Posted by bu...@apache.org.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=41749>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=41749





------- Additional Comments From Thomas.Hoffmann@speed4trade.com  2007-05-23 23:40 -------
I have the same problem. i am using IIS6 with Tomcat 5.5.23 and JDK 1.5.0_11
Win2003 Server x64
When i debug the server remote i see ajp-polling-threads. one of them
is utilizing 100% CPU
when i suspend this polling-thread cpu-usage drops immediatelly.
i dont use ssl. bug seems to be in the poll-method of the ajp-connector.

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


DO NOT REPLY [Bug 41749] - Tomcat with APR using SSL spins CPU at 100%

Posted by bu...@apache.org.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=41749>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=41749





------- Additional Comments From jkessinger@awarepoint.com  2007-03-22 12:07 -------
I have managed to get gdb attached once or twice now. The loop appears to be in
the error condition in ssl_socket_recv . EAGAIN is being returned, and a tight
loop occurs when data never arrives. 

I'm not certain who makes the socket non-blocking, but ssl_socket_recv does not
appear to check for any sort of timeout conditions.

This seems to occur on large multi-packet POSTed SOAP requests. It looks like
only part of the SOAP request has been read. I'm not sure if there's some sort
of packet dropping going on in my network.

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


DO NOT REPLY [Bug 41749] - Tomcat with APR using SSL spins CPU at 100%

Posted by bu...@apache.org.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=41749>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=41749


markt@apache.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |DUPLICATE




------- Additional Comments From markt@apache.org  2007-05-30 18:47 -------


*** This bug has been marked as a duplicate of 42090 ***

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


DO NOT REPLY [Bug 41749] - Tomcat with APR using SSL spins CPU at 100%

Posted by bu...@apache.org.
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG�
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=41749>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND�
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=41749





------- Additional Comments From dshort@san.rr.com  2007-05-14 09:29 -------
Problem:

I'm having an issue with Tomcat consuming 100% CPU when called from Apache via
ajp13.  If I run my .jsp and servlet files through Tomcat directly (port 8084)
all is well.  However, if Apache redirects my .jsp and servlet files to Tomcat
via ajp13, Tomcat starts consuming CPU and after a few seconds consumes all 100%
and must be restarted to release CPU.  Non-SSL environment.


Solution/Work Around:

Modify port 8009 (AJP/1.3) startup parameters to match Tomcat HTTP port startup
parameters (in this case 8084), as follows:

******* Working HTTP configuration - port 8084 *******

<Connector acceptCount="100" connectionTimeout="20000"
disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192"
maxSpareThreads="75" maxThreads="150" 
minSpareThreads="25" port="8084" redirectPort="8443"/>

******* Working AJP 1.3 configuration - port 8009 *******

<Connector acceptCount="100" connectionTimeout="20000"
disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192"
maxSpareThreads="75" maxThreads="150" 
minSpareThreads="25" port="8009" protocol="AJP/1.3" redirectPort="8443"/>

******* Non-Working AJP 1.3 configuration � port 8009 *******

<Connector enableLookups="false" port="8009" protocol="AJP/1.3"
redirectPort="8443"/>


Environment:

Pentium 4 (3.4 Mhz)
2 GB memory
Windows XP Pro SP2
MySQL 5.1
Apache 2.2.4
Mod_jk 2.2.4
AJP 1.3 (port 8009)
Tomcat 5.5.23 (port 8084)
Java 1.5.0_11-b03


workers.properties

workers.tomcat_home=C:\Tomcat5
workers.java_home=C:\Program Files\Java\jre1.5.0_11 
ps=\
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org