Eu tenho que enfrentar vários servidores de aplicativos (no começo, serão JBoss 6, Tomcat 8 standalone e Tomcat 8 embutido em aplicativos de inicialização com mola 1.2) com um Apache 2.4. Por causa disso eu decidi ir para mod_proxy (e não jk, ajp ou algo assim). Pelo que sei, configurei o Apache e os servidores de aplicativos para reutilizar / unir a conexão. Mas quando eu conto o número de portas abertas, vejo vários milhares:
$ netstat | grep :80 | wc -l
4630
(Eu estou no Windows, o comando acima foi executado no Cygwin, por isso não fique confuso. Apache etc executar nativo, isso significa sem camada de emulação cygwin) Eu teria esperado talvez mil portas, mas não mais.
Esta é a minha configuração do proxy reverso do Apache:
<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>
O MPM está ativo e eu posso usar até 150 conexões de entrada, pelo menos é isso que eu julgo ao olhar para o status do servidor ...
...
1 requests currently being processed, 149 idle workers
...
.. e a configuração do Apache:
<IfModule mpm_winnt_module>
ThreadsPerChild 150
MaxConnectionsPerChild 0
</IfModule>
Esta configuração faz com que o Tomcat incorporado no Spring Boot acesse até 500 conexões:
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
Então, por que existem tantos portos? Eu fiz um teste de carga com o JMeter de outro PC e quando eu calculo manualmente, eu esperaria esses números: jmeter- > Apache: 150 conexões na porta 80 Apache- > Tomcat: 150 conexões na porta 8080 (não pode exceder 500) Tomcat < -Apache: 150 conexões na porta 8080 (não pode exceder 500)
Existe um erro na minha configuração que faz com que as portas não sejam reutilizadas?