I have to front various application servers (in the beginning this will be JBoss 6, Tomcat 8 standalone and Tomcat 8 embedded into spring boot 1.2 apps) with an Apache 2.4. Because of this I decided to go for mod_proxy (and not jk, ajp or something like this). From what I know I set up Apache and the application servers to reuse / pool connection. But when I count the number of open ports I see several thousands:
$ netstat | grep :80 | wc -l 4630
(I am on Windows, the command above was run in Cygwin, so don't be confused. Apache etc run native, that means without cygwin emulation layer) I would have expected perhaps a thousand ports, but not more.
This is my Apache reverse proxy config:
<VirtualHost *:80> ServerAdmin ... ProxyRequests Off ProxyPreserveHost On ProxyPass / http://localhost:8080/ connectiontimeout=5 timeout=30 ProxyPassReverse / http://localhost:8080/ ServerName ... ErrorLog "logs/foo.log" CustomLog "logs/foo-access.log" common </VirtualHost>
MPM is active and I can use up to 150 incoming connections, at least this is what I judge from looking at server-status ...
... 1 requests currently being processed, 149 idle workers ...
.. and the Apache config:
<IfModule mpm_winnt_module> ThreadsPerChild 150 MaxConnectionsPerChild 0 </IfModule>
This configuration causes the Spring Boot embedded Tomcat to access up to 500 connections:
server.tomcat.access-log-pattern=%h %l %u %t %I "%r" %s %b %D server.tomcat.access-log-enabled=true server.tomcat.max-threads=500 server.tomcat.basedir=./tomcat
So why are there so many ports ? I ran a load test with JMeter from another PC and when I calculate manually I would expect these figures: jmeter->Apache: 150 connections on port 80 Apache->Tomcat: 150 connections on port 8080 (can not exceed 500) Tomcat<-Apache: 150 connections on port 8080 (can not exceed 500)
Is there an error in my setup which causes ports not to be re-used ?