Мне приходится запускать различные серверы приложений (вначале это будет JBoss 6, Tomcat 8 standalone и Tomcat 8, встроенный в приложения spring boot 1.2) с Apache 2.4. Из-за этого я решил использовать mod_proxy (а не jk, ajp или что-то в этом роде). Насколько мне известно, я настроил Apache и серверы приложений для повторного использования / подключения пула. Но когда я подсчитываю количество открытых портов, я вижу несколько тысяч:
$ netstat | grep :80 | wc -l
4630
(Я нахожусь в Windows, приведенная выше команда была запущена в Cygwin, так что не путайте. Apache и т. Д. Работают в собственном коде, то есть без уровня эмуляции cygwin) Я ожидал, возможно, тысячу портов, но не больше.
Это моя конфигурация обратного прокси-сервера 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>
MPM активен, и я могу использовать до 150 входящих соединений, по крайней мере, это то, что я сужу, глядя на состояние сервера ...
...
1 requests currently being processed, 149 idle workers
...
.. и конфигурация Apache:
<IfModule mpm_winnt_module>
ThreadsPerChild 150
MaxConnectionsPerChild 0
</IfModule>
Эта конфигурация заставляет встроенный Tomcat Spring Boot доступ к 500 соединениям:
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
Так почему так много портов? Я провел нагрузочный тест с JMeter с другого ПК, и когда я вычислял вручную, я ожидал следующих цифр: jmeter-> Apache: 150 подключений на порт 80 Apache-> Tomcat: 150 подключений на порт 8080 (не может превышать 500) Tomcat <- Apache: 150 подключений на порт 8080 (не может превышать 500)
Есть ли в моей настройке ошибка, из-за которой порты не используются повторно?