backend restart && 502 Bad Gateway

Gena Makhomed makhomed at pbank.lutsk.ua
Fri Nov 16 05:44:03 MSK 2007


Здравствуйте, All!

перезапуск backend`а (service httpd restart) занимает меньше секунды времени,
но если в этот период времени на сервер приходят запросы - клиенты получают
от nginx`а ответ "502 Bad Gateway", и в error.log при этом пишется ошибка:

[error] 14271#0: *49 connect() failed (111: Connection refused) while reading response header from upstream

если клиент в браузере нажмет F5, он увидит запрашиваемую страницу,
к этому времени backend уже успеет запуститься и обработает запрос.

хочется найти наиболее изящный способ спрятать перезапуск backend`а
от клиентов, чтобы вместо отказа в обслуживании они получили только
небольшую задержку ответа, в идеале - вообще бы ничего не заметили.

единственный вариант, который я пока что смог найти - это запустить
еще один httpd на другом ip, например, 127.0.0.2, и для всех хостов
вместо

    location / {
        proxy_pass http://127.0.0.1;
    }

прописать

    location / {
        proxy_pass  http://backend;
    }

где backend - это
    
upstream  backend  {
    server   http://127.0.0.1;
    server   http://127.0.0.2 backup;
}

первый httpd пойдет перезапускаться, например, если будет поврежден opcode cache
у eAccelerator`а. чтобы backup`ный остался, его надо запускать без eAccelerator.
подозреваю, что других вариантов избежать 502, кроме двух независимых httpd нет.

хотелось бы узнать какие еще народ использует варианты повышения живучести
backend`ов, кроме установки новых физических серверов - это и так понятно.

PS http://2bits.com/articles/php-op-code-caches-accelerators-a-must-for-a-large-site.html
   ...
   Drawbacks of PHP op-code caches: Segmentation Faults
   ...
   http://2bits.com/articles/logwatcher-restart-apache-after-a-segmentation-fault.html
   ...
   logwatcher: restart Apache after a segmentation fault
   ...
-- 
Best regards,
 Gena                          mailto:makhomed at pbank.lutsk.ua







More information about the nginx-ru mailing list