Назад | Перейти на главную страницу

Проблемы со связью Apache Tomcat. Производительность очень низкая

Версия 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 в конфигурации вашего прокси.