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 2008/05/13 16:38:24 UTC

DO NOT REPLY [Bug 44989] New: using NIO connector with compression consumes all CPU

https://issues.apache.org/bugzilla/show_bug.cgi?id=44989

           Summary: using NIO connector with compression consumes all CPU
           Product: Tomcat 6
           Version: 6.0.16
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: critical
          Priority: P1
         Component: Connectors
        AssignedTo: tomcat-dev@jakarta.apache.org
        ReportedBy: clovis.wichoski@gmail.com


Created an attachment (id=21957)
 --> (https://issues.apache.org/bugzilla/attachment.cgi?id=21957)
JConsole overview

Hi, i migrated from version 6.0.14 to version 6.0.16, and configured tomcat to
use NIO connector and compression on, with that i'm getting a thread name
'http-exec-80-2' that consumes 49-50% of CPU, and the thread
'http-80-ClientPoller' that consumes 46-48% of CPU, with this i have a jvm that
consumes 100% o my CPU.

uname -a output: 
Linux 2.6.23.1-10.fc7 #1 SMP Fri Oct 19 15:39:08 EDT 2007 i686 i686 i386
GNU/Linux 

java -version output:
java version "1.5.0_15"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_15-b04)
Java HotSpot(TM) Server VM (build 1.5.0_15-b04, mixed mode)

http-exec-80-2 stack:
org.apache.coyote.http11.InternalNioOutputBuffer$SocketOutputBuffer.doWrite(InternalNioOutputBuffer.java:806)
org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:126)
org.apache.coyote.http11.filters.GzipOutputFilter$FakeOutputStream.write(GzipOutputFilter.java:164)
java.util.zip.GZIPOutputStream.finish(GZIPOutputStream.java:95)
org.apache.coyote.http11.filters.GzipOutputFilter.end(GzipOutputFilter.java:122)
org.apache.coyote.http11.InternalNioOutputBuffer.endRequest(InternalNioOutputBuffer.java:390)
org.apache.coyote.http11.Http11NioProcessor.action(Http11NioProcessor.java:1079)
org.apache.coyote.Response.action(Response.java:183)
org.apache.coyote.Response.finish(Response.java:305)
org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:276)
org.apache.catalina.connector.Response.finishResponse(Response.java:492)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:310)
org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:879)
org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:719)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:2080)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
java.lang.Thread.run(Thread.java:595)

sometimes the stack of http-exec-80-2 is just changing from this to above:
org.apache.coyote.http11.InternalNioOutputBuffer.addToBB(InternalNioOutputBuffer.java:620)
org.apache.coyote.http11.InternalNioOutputBuffer.access$000(InternalNioOutputBuffer.java:46)
org.apache.coyote.http11.InternalNioOutputBuffer$SocketOutputBuffer.doWrite(InternalNioOutputBuffer.java:803)
org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:126)
org.apache.coyote.http11.filters.GzipOutputFilter$FakeOutputStream.write(GzipOutputFilter.java:164)
java.util.zip.GZIPOutputStream.finish(GZIPOutputStream.java:95)
org.apache.coyote.http11.filters.GzipOutputFilter.end(GzipOutputFilter.java:122)
org.apache.coyote.http11.InternalNioOutputBuffer.endRequest(InternalNioOutputBuffer.java:390)
org.apache.coyote.http11.Http11NioProcessor.action(Http11NioProcessor.java:1079)
org.apache.coyote.Response.action(Response.java:183)
org.apache.coyote.Response.finish(Response.java:305)
org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:276)
org.apache.catalina.connector.Response.finishResponse(Response.java:492)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:310)
org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:879)
org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:719)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:2080)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
java.lang.Thread.run(Thread.java:595)

http-80-ClientPoller stack:
sun.nio.ch.PollArrayWrapper.poll0(Native Method)
sun.nio.ch.PollArrayWrapper.poll(PollArrayWrapper.java:100)
sun.nio.ch.PollSelectorImpl.doSelect(PollSelectorImpl.java:56)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:1473)
java.lang.Thread.run(Thread.java:595)

attached are the screenshots of JConsole from where you can see the graphs...


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

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


DO NOT REPLY [Bug 44989] using NIO connector with compression consumes all CPU

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=44989


Clóvis Wichoski <cl...@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEEDINFO                    |ASSIGNED




--- Comment #3 from Clóvis Wichoski <cl...@gmail.com>  2008-05-15 13:15:18 PST ---
Hi, Filip,

on May 13, 2008 when i read your message, i tested with the svn snapshot and
put that in production with JDK 1.5.0_15 32bit, and i wait until today to
report that the system is working very well, now its processing 1100 request
per minute just using an average of 10% of CPU, now the system works as
expected, when you commit and have a final version, let me know, for now i will
stay using the snapshot version.

thanks for your help.

KR
Clóvis


-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


DO NOT REPLY [Bug 44989] using NIO connector with compression consumes all CPU

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=44989


Filip Hanik <fh...@apache.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED




--- Comment #4 from Filip Hanik <fh...@apache.org>  2008-05-15 18:42:38 PST ---
Marking fixed, user reports no more problems in SVN version

thanks for your assistance!


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

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


DO NOT REPLY [Bug 44989] using NIO connector with compression consumes all CPU

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=44989


Filip Hanik <fh...@apache.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |NEEDINFO




--- Comment #2 from Filip Hanik <fh...@apache.org>  2008-05-13 08:03:51 PST ---
Hi there, many thanks for the report.
I would like to ask you for two things

1. Test the latest 6.0.x trunk, there has been changes in the exact code you
are refering to

fairly simple to build
(build with JDK 1.5)

svn co http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk
cd trunk
ant download
ant

output ends up in output/build


and if that doesn't change your scenario, make sure we are not running into a
JDK/NIO bug on linux, so test with the latest 1.6 JVM

best
Filip


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

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


DO NOT REPLY [Bug 44989] using NIO connector with compression consumes all CPU

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=44989





--- Comment #1 from Clóvis Wichoski <cl...@gmail.com>  2008-05-13 07:39:10 PST ---
Created an attachment (id=21958)
 --> (https://issues.apache.org/bugzilla/attachment.cgi?id=21958)
JConsole TopThreads


-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org