Bug 56348

Summary: ReadListener reading stream on different thread very slow
Product: Tomcat 8 Reporter: Yann Simon <yann.simon.fr>
Component: CatalinaAssignee: Tomcat Developers Mailing List <dev>
Status: RESOLVED FIXED    
Severity: normal    
Priority: P2    
Version: 8.0.5   
Target Milestone: ----   
Hardware: PC   
OS: Linux   

Description Yann Simon 2014-04-04 14:10:57 UTC
In a ReadListener, if the servlet input stream is read with another thread as the servlet thread, the upload is very slow.

The following sample application reproduces the problem:
https://github.com/yanns/servlet31_async/tree/async-perf

/upload2 reads the input stream in the servlet thread
/upload forks a new thread that reads the servlet input stream

My measurements:

With tomcat 8.0.5
/upload: 2 minutes
/upload2: 3,8 s

It is expected that /upload is more slow that /upload2, but not with that difference.

The same tests with jetty:
/upload: 9,5 s
/upload2: 3,7s
Comment 1 Mark Thomas 2014-04-23 21:11:38 UTC
Thanks for the report and the test case. This has been fixed in 8.0.x for 8.0.6 onwards.