Версия Apache 2.4.34 (Win64) Apache Tomcat 6.0.44 Windows Server 2016 Стандартная версия 1607
Через определенный период (1-2 часа). Производительность приложения становится крайне низкой, и через некоторое время открывается страница обслуживания (служба временно недоступна).
В журналах Tomcat я не могу найти никаких проблем. В журналах Apache:
[Mon Apr 15 08:41:49.585041 2019] [proxy_ajp:error] [pid 3880:tid 1044] (OS 10060)A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. : AH01030: ajp_ilink_receive() can't receive header
[Mon Apr 15 08:41:49.585041 2019] [proxy_ajp:error] [pid 3880:tid 1044] [client 1.2.3.4:50880] AH00992: ajp_read_header: ajp_ilink_receive failed, referrer ...
Помимо вышеперечисленных логов. Журналы заполнены следующими записями
[Mon Apr 15 08:41:20.131907 2019] [proxy_balancer:error] [pid 3880:tid 1092] [client 80.114.182.213:54316] AH01167: balancer://ajaxbalancer: All workers are in error state for route (ajaxB), referer: https://url here
Анализ:
База данных исключена как проблема, так как нет блокировок, время выполнения запроса также нормальное, а сервер db находится в оптимальном состоянии.
Настроить :
В кластерной среде работают 2 сервера, использующие балансировщик нагрузки.
Конфигурация Tomcat на обоих серверах одинакова:
<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" maxConnections="-1" connectionTimeout="300000" keepAliveTimeout="300000" />
Конфигурация Apache:
ProxyErrorOverride Off
ProxyTimeout 120
Timeout 120
ProxyPass /static_html !
<Proxy balancer://ajaxbalancer/>
BalancerMember ajp://127.0.0.1:8109/app route=Srv1 loadfactor=10 ttl=90
BalancerMember ajp://127.0.0.1:8109/app route=Srv1 loadfactor=10 ttl=90
ProxySet stickysession=JSESSIONID|jsessionid scolonpathdelim=On nofailover=On
#ProxySet lbmethod=bybusyness
ProxySet lbmethod=byrequests
</Proxy>
<Location "/swingApp/">
ProxyPass balancer://ajaxbalancer/
ProxyPassReverse balancer://ajaxbalancer/
ProxyPreserveHost On
SetEnv keepalive=on
</Location>
Прошу помочь мне в теме. Если потребуется дополнительная информация, дайте мне знать.
Поддержка Apache Tomcat 6.0.x закончился 31 декабря 2016 года. С тех пор было объявлено о множестве уязвимостей безопасности, которые с большой вероятностью повлияют на серию 6.0.x (как только версия Tomcat достигает EOL, она не оценивается, чтобы определить, затронута ли она новыми отчетами об уязвимостях).
Проблема, которую вы описываете, звучит как исчерпание потоков на стороне Tomcat. Вы можете либо увеличить maxThreads
на вашем разъеме AJP, чтобы он был равен MaxRequestWorkers
на httpd или включите disablereuse
в конфигурации вашего прокси.