Am 01.05.2015 um 15:19 schrieb Mark Thomas:
On 01/05/2015 14:07, Felix Schumacher wrote:
Am 01.05.2015 um 14:53 schrieb Mark Thomas:
On 01/05/2015 13:07, Felix Schumacher wrote:
<snip/>

* 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
Looks to be OK, when I revert that patch on the 8.0.22. NIO2 with TLS
completes without delay.
That patch looks to be addressing multiple issues. Are you able to
figure out which part of the patch is causing the problem? (It may
require some reverse engineering to figure out which part of the patch
is addressing which issue.)
The problem apears to be caused by this part of the patch:

diff --git a/java/org/apache/tomcat/util/net/SecureNio2Channel.java b/java/org/apache/tomcat/util/net/SecureNio2Channel.java
index ba16492..bbc18b0 100644
--- a/java/org/apache/tomcat/util/net/SecureNio2Channel.java
+++ b/java/org/apache/tomcat/util/net/SecureNio2Channel.java
@@ -784,21 +753,15 @@ public class SecureNio2Channel extends Nio2Channel  {
             handler.completed(Integer.valueOf(-1), attachment);
             return;
         }
         if (!handshakeComplete) {
throw new IllegalStateException(sm.getString("channel.nio.ssl.incompleteHandshake"));
         }

         if (readPending) {
             throw new ReadPendingException();
         } else {
             readPending = true;
         }
.
- ReadCompletionHandler<A> readCompletionHandler = new ReadCompletionHandler<>(dst, handler);
-        if (netInBuffer.position() > 0 ) {
- readCompletionHandler.completed(Integer.valueOf(netInBuffer.position()), attachment);
         } else {
- sc.read(netInBuffer, timeout, unit, attachment, readCompletionHandler); + sc.read(netInBuffer, timeout, unit, attachment, new ReadCompletionHandler<>(dst, handler));
     }
.
     @Override

The rest of the patch will not influence the jmeter test.

Regards
 Felix

Mark


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



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

Reply via email to