У нас странная проблема с прокси-сервером HA. Хотя мы решили это, мы действительно не понимаем почему.
Настройка очень проста: балансировщик нагрузки и серверная часть Apache. Наша проблема возникает из-за http-запроса, который выполняется на Apache за 100 минут, прежде чем какой-либо вывод будет отправлен обратно.
В первой настройке у нас было timeout server
30 минут. В этом случае HAProxy представил ошибку 504, в журнале было показано sH--
. Согласно документам:
Ход «сервер тайм-аута» перед тем, как сервер сможет вернуть свои заголовки ответа.
Поэтому мы увеличили время ожидания сервера до 60 минут. На этот раз мы получили (через 100 минут) ошибку 502 и в журнале SH--
:
Сервер был прерван перед отправкой полных заголовков HTTP-ответа или отказал при обработке запроса.
Сначала мы подозревали сбой Apache, но затем мы заметили, что через 60 минут Apache получил второй запрос от HAProxy, который не отображался ни в одном файле журнала. Может быть, произошло следующее:
Кстати, только после того, как мы увеличили тайм-аут сервера до 2 часов, запрос был обработан без ошибок (без повторных попыток).
Удаленная конфигурация HAProxy 1.5.9:
global
maxconn 4000 # Sets the maximum per-process number of concurrent connections.
maxsslconn 1000 # Sets the maximum per-process number of concurrent SSL connections.
maxcompcpuusage 95 # Sets the maximum CPU usage HAProxy can reach before stopping or decreasing the compression level.
defaults HTTP
mode http
option http-server-close # Preserve client persistent connections while handling every incoming request individually, dispatching them one after another to servers, in HTTP close mode
option httplog
option forwardfor
timeout connect 4s
timeout client 20s
timeout server 100s
timeout http-request 20s # Set the maximum allowed time to wait for a complete HTTP request
maxconn 200
default-server inter 2s fall 6 rise 2 port 80
frontend dc2--fe
bind 8.8.8.8:80 mss 1422
default_backend dc2--active
backend dc2--active
timeout server 7200s
server app37 10.0.0.97:80 check