У меня настроен следующий VirtualHost (Apache 2.2.22)
<VirtualHost *:80>
ServerName ************
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ErrorLog /var/log/apache2/dalo-lt_error_log
LogLevel warn
TransferLog /var/log/apache2/dalo-lt_access_log
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>
Со следующим в моем Tomcat server.xml
(7.0.39)
<Connector port="8009" protocol="AJP/1.3"
redirectPort="8443"
connectionTimeout="60000"
maxConnections="36864"
maxThreads="600" />
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
maxConnections="36864"
maxThreads="600"
redirectPort="8443" />
Когда я запускаю свой стресс-тест через vhost: 80 + ajp, я начинаю видеть разорванные соединения после определенного момента. Однако, если я запускаю тест напрямую через http-коннектор tomcat (: 8080), я не вижу никаких обрывов соединений.
Как лучше всего определить причину этого?
Для полноты картины вот некоторые настройки из моего apache2.conf
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 10
MaxSpareServers 20
MaxClients 500
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_worker_module>
StartServers 4
MinSpareThreads 50
MaxSpareThreads 450
ThreadLimit 256
ThreadsPerChild 150
MaxClients 300
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_event_module>
StartServers 4
MinSpareThreads 50
MaxSpareThreads 450
ThreadLimit 256
ThreadsPerChild 150
MaxClients 300
MaxRequestsPerChild 0
</IfModule>
Обновить: Запрос server-status?auto
дает последующий в то время как во время фазы нагрузочного теста, когда запросы отбрасываются - поэтому мне кажется, что есть достаточно рабочих и т.д., чтобы сэкономить
Веб-сервер Apache начнет сбрасывать соединения, если он получает слишком много запросов. Вы можете использовать mod_status, чтобы посмотреть на табло, если оно заполнено, вы можете увеличить количество рабочих. (следует выяснить, подходит ли увеличенное количество рабочих для вашей среды)