We have a web application with a java backend and a tomcat frontend server. Before the tomcat there is an Apache. Both of them are on one host. The backend is on another host. Web browsers communicate with Apache/Tomcat using Rest calls. The client application uses a lot of parallel api calls.
While we do a performance test on the Apache using high parallel tcp connection number (~300) browsers can not/very slowly load the client js application.
We tried a lot of prefork/workers/maxclients settings. None of them helped.
After we temporary had replaced the Apache with Nginx this problem was instantly solved. Nginx seems to be an OK alternative but Apache would be better in this environment. Does anybody have any idea what makes the difference?
CPU/Memory/Network can't be the bottleneck.
It's interesting that jmeter gives this response for a lot of requests: Non HTTP response code: java.net.SocketTimeoutException Non HTTP response code: javax.net.ssl.SSLHandshakeException. Of course there are many 200 for this type of requests.
Thanks.