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
Thanks for the report and the test case. This has been fixed in 8.0.x for 8.0.6 onwards.