Hi Rémy/ Christopher, It will stuck there for 10-15 minutes, so it will take time to load simple Web UI, there is no WebSocket call. I am giving you one of the sample where it will take 90% time in write operation, sometime it will reach to 100%.
O-javax.servlet.http.HttpServlet.service(HttpServlet.java:742) count=1797(%100.00) O-org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) count=1797(%100.00) O-javax.servlet.http.HttpServlet.service(HttpServlet.java:661) count=1797(%100.00) O-org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) count=1797(%100.00) O-org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) count=1797(%100.00) O-org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) count=1797(%100.00) O-org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) count=1797(%100.00) O-com.ptc.mvc.gwt.GwtHandlerAdapter.handle(GwtHandlerAdapter.java:117) count=1797(%100.00) O-com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) count=1797(%100.00) O-com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:313) count=1678(%93.378) | O-com.google.gwt.user.server.rpc.RemoteServiceServlet.writeResponse(RemoteServiceServlet.java:460) count=1678(%93.378) | O-com.google.gwt.user.server.rpc.RPCServletUtils.writeResponse(RPCServletUtils.java:375) count=1669(%92.877) | | O-java.io.OutputStream.write(OutputStream.java:75) count=1669(%92.877) | | O-com.dynatrace.diagnostics.agent.introspection.uem.impl.AutoHtmlInjectorStream.write(Unknown Source) count=1669(%92.877) | | O-wt.servlet.CompressionFilter$GzippingResponse$GzipAsAppropStream.write(CompressionFilter.java:687) count=1669(%92.877) | | O-wt.servlet.CompressionFilter$GzippingResponse$GzipAsAppropStream$BufferStream.write(CompressionFilter.java:757) count=1669(%92.877) | | O-wt.servlet.ServletRequestMonitor$CountingOutputStream.write(ServletRequestMonitor.java:2388) count=1669(%92.877) | | O-com.dynatrace.diagnostics.agent.introspection.uem.impl.AutoHtmlInjectorStream.write(Unknown Source) count=1669(%92.877) | | O-org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:96) count=1669(%92.877) | | O-org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:369) count=1669(%92.877) | | O-org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:391) count=1669(%92.877) | | O-org.apache.catalina.connector.OutputBuffer.append(OutputBuffer.java:724) count=1669(%92.877) | | O-org.apache.catalina.connector.OutputBuffer.appendByteArray(OutputBuffer.java:795) count=1669(%92.877) | | O-org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:351) count=1669(%92.877) | | O-org.apache.coyote.Response.doWrite(Response.java:541) count=1669(%92.877) | | O-org.apache.coyote.ajp.AjpProcessor$SocketOutputBuffer.doWrite(AjpProcessor.java:1449) count=1669(%92.877) | | O-org.apache.coyote.ajp.AjpProcessor.access$900(AjpProcessor.java:54) count=1669(%92.877) | | O-org.apache.coyote.ajp.AjpProcessor.writeData(AjpProcessor.java:1331) count=1669(%92.877) | | O-org.apache.tomcat.util.net.SocketWrapperBase.write(SocketWrapperBase.java:385) count=1669(%92.877) | | O-org.apache.tomcat.util.net.SocketWrapperBase.writeBlocking(SocketWrapperBase.java:462) count=1669(%92.877) | | O-org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:726) count=1669(%92.877) | | O-org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1316) count=1669(%92.877) | | O-org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:157) count=1669(%92.877) | | O-org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:114) count=1667(%92.766) | | | O-org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.awaitWriteLatch(NioEndpoint.java:1160) count=1667(%92.766) | | | O-org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.awaitLatch(NioEndpoint.java:1157) count=1667(%92.766) | | | O-java.util.concurrent.CountDownLatch.await(CountDownLatch.java:277) count=1667(%92.766) Thanks and Regards, Rajendra Rathore 9922701491 -----Original Message----- From: Rémy Maucherat <r...@apache.org> Sent: Monday, January 6, 2020 10:18 PM To: Tomcat Users List <users@tomcat.apache.org> Subject: Re: performance issue with Tomcat 8.5.35 in org.apache.tomcat.util.net.NioBlockingSelector.write API External email from: users-return-269178-rarathore=ptc....@tomcat.apache.org On Mon, Jan 6, 2020 at 1:27 PM Rathore, Rajendra <rarath...@ptc.com> wrote: > Hi Team, > > > > We are facing performance issue during > *org.apache.tomcat.util.net.NioBlockingSelector.write > API call, *,most of our thread stuck and spending more time in that > API, you can check below screenshot for more details. > > > > > > > > > > We debug the code and found that NioChannel.write method return > 0(Zero) value, in that case our threads are stuck, Please let us know > why this happen. > As NIO is non blocking IO, 0 bytes written means there's a backlog and output will block in NioBlockingSelector since it emulates blocking IO there. It should not actually consume CPU, just wait until there's a poller event indicating writing data may continue. Rémy > > > Please let me know if you need more details. > > > > > > Thanks and Regards, > > Rajendra Rathore > > 9922701491 > > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org