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 <[email protected]>
Sent: Monday, January 6, 2020 10:18 PM
To: Tomcat Users List <[email protected]>
Subject: Re: performance issue with Tomcat 8.5.35 in
org.apache.tomcat.util.net.NioBlockingSelector.write API
External email from: [email protected]
On Mon, Jan 6, 2020 at 1:27 PM Rathore, Rajendra <[email protected]> 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: [email protected]
For additional commands, e-mail: [email protected]