У меня такая среда: у нас есть собственный веб-сервер, который взаимодействует с другими программными компонентами (создавая документы в формате PDF) по протоколу http. Такой программный компонент называется рабочим. Обычно рабочий готовит документы в формате pdf за 3 минуты. Таким образом, мы вставляем сервер apache httpd в качестве балансировщика нагрузки, чтобы несколько рабочих серверов работали на одном нашем веб-сервере.
Вся конструкция работает. Но пользователь получит HTTP-ответ 503, если сервер под последним.
Прилагается файл журнала loadbalancer. Я не могу сказать, что случилось. Может кто-нибудь дать мне подсказку?
Mon Oct 17 13:55:48.248250 2016] [proxy:debug] [pid 13188:tid 776] proxy_util.c(2173): AH00943: http: has released connection for (worker003.mydomain.com)
[Mon Oct 17 13:55:48.248250 2016] [proxy_balancer:debug] [pid 13188:tid 776] mod_proxy_balancer.c(669): [client 192.168.71.52:63893] AH01176: proxy_balancer_post_request for (balancer://wmpscluster)
[Mon Oct 17 13:56:11.622604 2016] [proxy:debug] [pid 13188:tid 760] proxy_util.c(2173): AH00943: http: has released connection for (worker003.mydomain.com)
[Mon Oct 17 13:56:11.622604 2016] [proxy_balancer:debug] [pid 13188:tid 760] mod_proxy_balancer.c(669): [client 192.168.71.52:54068] AH01176: proxy_balancer_post_request for (balancer://wmpscluster)
[Mon Oct 17 13:56:14.657793 2016] [proxy_http:error] [pid 13188:tid 792] (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. : [client 192.168.71.52:51760] AH01102: error reading status line from remote server worker003.mydomain.com:8080
[Mon Oct 17 13:56:14.657793 2016] [proxy_http:debug] [pid 13188:tid 792] mod_proxy_http.c(1264): [client 192.168.71.52:51760] AH01103: read timeout
[Mon Oct 17 13:56:14.657793 2016] [proxy_http:debug] [pid 13188:tid 792] mod_proxy_http.c(1319): [client 192.168.71.52:51760] AH01105: NOT Closing connection to client although reading from backend server worker003.mydomain.com:8080 failed.
[Mon Oct 17 13:56:14.657793 2016] [proxy:error] [pid 13188:tid 792] [client 192.168.71.52:51760] AH00898: Error reading from remote server returned by /plotwmps/servlet/PlotWebConnector
[Mon Oct 17 13:56:14.657793 2016] [proxy:debug] [pid 13188:tid 792] proxy_util.c(2173): AH00943: HTTP: has released connection for (worker003.mydomain.com)
[Mon Oct 17 13:56:14.657793 2016] [proxy_balancer:debug] [pid 13188:tid 792] mod_proxy_balancer.c(669): [client 192.168.71.52:51760] AH01176: proxy_balancer_post_request for (balancer://wmpscluster)
[Mon Oct 17 13:56:50.153795 2016] [proxy:debug] [pid 13188:tid 1032] proxy_util.c(2173): AH00943: http: has released connection for (worker003.mydomain.com)
На Apache истекает тайм-аут:
[Mon Oct 17 13:56:14.657793 2016] [proxy_http:error] [pid 13188:tid 792] (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. : [client 192.168.71.52:51760] AH01102: error reading status line from remote server worker003.mydomain.com:8080
[Mon Oct 17 13:56:14.657793 2016] [proxy_http:debug] [pid 13188:tid 792] mod_proxy_http.c(1264): [client 192.168.71.52:51760] AH01103: read timeout
[Mon Oct 17 13:56:14.657793 2016] [proxy_http:debug] [pid 13188:tid 792] mod_proxy_http.c(1319): [client 192.168.71.52:51760] AH01105: NOT Closing connection to client although reading from backend server worker003.mydomain.com:8080 failed.
Но это понятно, учитывая, что вы сказали, что вашему бэкэнду нужно около 3 минут на подготовку pdf.
На самом деле на мой взгляд 3 минуты - это очень много времени для ответа, вы уверены, что ваши воркеры работают правильно?
Если вам приходится жить с такими медленными ответами, единственное решение, которое я могу придумать, - это установить более высокий тайм-аут на балансировщике нагрузки Apache.