Mushthaq Rumy created HTTPCORE-687:
--------------------------------------

             Summary: High CPU usage noticed for requests with newline 
characters
                 Key: HTTPCORE-687
                 URL: https://issues.apache.org/jira/browse/HTTPCORE-687
             Project: HttpComponents HttpCore
          Issue Type: Bug
          Components: HttpCore, HttpCore NIO
    Affects Versions: 4.4.14
         Environment: Oracle JDK 1.8.0_211
Oracle JDK 11.0.9
            Reporter: Mushthaq Rumy
         Attachments: CPUHigh-ScreenRecording.mov, FixCPUSpike.png, 
HttpNIOTestServer.zip, testclient 2.zip

We are using the 4.4.14 of HttpCore NIO. We are having an issue while sending a 
request to the server with additional newline characters where the CPU usage 
seems to increase and stays on forever. We debugged and found out that after 
the HTTPS response is written back to the client, the server tries to close the 
connection and the SSLIOSession. Furthermore, we found out that the condition 
[1] which gets executed in order to make the state as closed becomes false 
forever and hence it keeps on trying to close and results in the CPU spike.

After further debugging we found out that the after a certain point the 
*position* is always less than the *limit* and the state is set to *COMPLETED* 
in** parse method in AbstractMessageParser.java [2], even though there are more 
lines to be read.

In order to resolve this we did a small fix as shown in *FixCPUSpike.png*

We have attached a sample client and a server in order to reproduce the issue.


Appreciate your help on this.

 

[1] - 
[https://github.com/apache/httpcomponents-core/blob/rel/v4.4.14/httpcore-nio/src/main/java/org/apache/http/nio/reactor/ssl/SSLIOSession.java#L389]

[2] - 
[https://github.com/apache/httpcomponents-core/blob/rel/v4.4.14/httpcore-nio/src/main/java/org/apache/http/impl/nio/codecs/AbstractMessageParser.java#L186-L241]

 

Thanks,
Mushthaq

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to