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

Reply via email to