On 01/05/2015 13:07, Felix Schumacher wrote:
> Am 01.05.2015 um 01:47 schrieb Ognjen Blagojevic:
>> On 29.4.2015 18:41, Mark Thomas wrote:
>>> The proposed 8.0.22 release is:
>>> [X] Broken - do not release
>>> [ ] Stable - go ahead and release as 8.0.22
>>
>> Tested .zip distribution on Windows 7 64-bit, Oracle JDK 1.8.0_45 and
>> APR/native 1.1.33:
>>
>> - Crawled all links (except /manager, /host-manager and
>> /examples/async*). No broken links found, except links to JavaDocs.
>>
>> - Smoke tests of BIO, NIO, NIO2 and APR, with and without TLS. Only
>> NIO2+TLS fails.
>>
>> Connector configuration:
>>
>>     <Connector port="449"
>> protocol="org.apache.coyote.http11.Http11Nio2Protocol" SSLEnabled="true"
>>                maxThreads="150" scheme="https" secure="true"
>>                clientAuth="false" sslProtocol="TLS"
>>                keystoreFile="(snip).p12" keyAlias="(snip)"
>>                keystoreType="pkcs12" />
>>
>>
>> I smoke tested with this crawler:
>>
>>   https://bz.apache.org/bugzilla/attachment.cgi?id=31184
>>
>>
>>
>> I get in the logs some of those:
>>
>> 01-May-2015 01:29:59.631 SEVERE [http-apr-83-exec-7]
>> org.apache.coyote.http11.AbstractHttp11Processor.endRequest Error
>> finishing response
>>  org.apache.tomcat.jni.Error: 20005: An invalid socket was returned
>>     at org.apache.tomcat.jni.Socket.sendbb(Native Method)
>>     at
>> org.apache.coyote.http11.InternalAprOutputBuffer.writeToSocket(InternalAprOutputBuffer.java:287)
>>
>>     at
>> org.apache.coyote.http11.InternalAprOutputBuffer.writeToSocket(InternalAprOutputBuffer.java:244)
>>
>>     at
>> org.apache.coyote.http11.InternalAprOutputBuffer.flushBuffer(InternalAprOutputBuffer.java:213)
>>
>>     at
>> org.apache.coyote.http11.AbstractOutputBuffer.endRequest(AbstractOutputBuffer.java:378)
>>
>>     at
>> org.apache.coyote.http11.AbstractHttp11Processor.endRequest(AbstractHttp11Processor.java:1800)
>>
>>     at
>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1143)
>>
>>     at
>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
>>
>>     at
>> org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2463)
>>
>>     at
>> org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2452)
>>
>>     at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>>
>>     at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>>
>>     at
>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>>
>>     at java.lang.Thread.run(Thread.java:745)
>>
>>
>> And a lot of those:
>>
>> 01-May-2015 01:29:59.625 WARNING [http-nio2-84-exec-6]
>> org.apache.tomcat.util.net.AbstractEndpoint.countDownConnection
>> Incorrect connection count, multiple socket.close called on the same
>> socket.
>> 01-May-2015 01:29:59.627 WARNING [http-nio2-84-exec-4]
>> org.apache.tomcat.util.net.AbstractEndpoint.countDownConnection
>> Incorrect connection count, multiple socket.close called on the same
>> socket.
>> 01-May-2015 01:29:59.627 WARNING [http-nio2-84-exec-1]
>> org.apache.tomcat.util.net.AbstractEndpoint.countDownConnection
>> Incorrect connection count, multiple socket.close called on the same
>> socket.
>>
>>
>> I probably won't be able to do any more tests before Monday.
> 
> I have done some tests with jmeter. Calling the "home" page of tomcat
> through TLS with the different connectors BIO, NIO and NIO2. Using 100
> concurrent "clients" and letting each client repeat 1000 requests, I get
> the following results:
> 
> * NIO and BIO run without errors.
> 
> * NIO2 seems to run OK at first, but after a while (last test the
> "while" ended after 17900 requests) jmeters threads will not get a
> response from tomcat. The test will continue when the clients timeout
> after 60 seconds.
> 
> I see no errors in tomcat logs. The access logs show a time jump of one
> minute:
> 192.168.178.20 - - [01/May/2015:13:57:39 +0200] "GET / HTTP/1.1" 200 11250
> 192.168.178.20 - - [01/May/2015:13:57:39 +0200] "GET / HTTP/1.1" 200 11250
> 192.168.178.20 - - [01/May/2015:13:57:39 +0200] "GET / HTTP/1.1" 200
> 11250  <--- JUMP
> 192.168.178.20 - - [01/May/2015:13:58:33 +0200] "GET / HTTP/1.1" 200
> 11250  <---
> 192.168.178.20 - - [01/May/2015:13:58:33 +0200] "GET / HTTP/1.1" 200 11250
> 192.168.178.20 - - [01/May/2015:13:58:33 +0200] "GET / HTTP/1.1" 200 11250
> 192.168.178.20 - - [01/May/2015:13:58:33 +0200] "GET / HTTP/1.1" 200 11250
> 
> If I repeat the same tests with 8.0.21 the test will run without delay
> (or timeout on jmeter side).
> 
> Without encryption all connectors will complete the tests without delay
> on 8.0.22.

This looks to be the culprit:
http://svn.apache.org/viewvc?view=revision&revision=1672626

Mark


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

Reply via email to