Я использую довольно ресурсоемкий сайт на основе Magento через комбинацию Apache httpd, redis и php-fpm.

Когда я делаю изменения в основных файлах PHP, необходимо перезапустить вышеперечисленные службы, чтобы убедиться, что старый код не кэшируется, что может (и может) испортить Magento.

В прошлом, когда я только использовал httpd, я просто изящно запускал service httpd graceful чтобы изящно перезапустить ее, не затрагивая посетителей сайта, но теперь, когда мне нужно перезапустить несколько служб (и сбросить redis), веб-сайт недоступен в течение нескольких секунд.

Можно ли этого избежать?

1 ответ1

1

Если вы посмотрите документацию Apache, то увидите, что Apache использует для этого сигнал USR1 . Как таковая, это обычная рутина. Вам придется проверить документацию других компонентов, чтобы увидеть, когда они предлагают аналогичные варианты. Например, один из совпадений для php-fpm:можно ли перезагрузить один из пулов PHP-FPM, не мешая другим ?

Если один из компонентов не имеет такой опции, вы не сможете сделать это с одним сервером / сайтом. Вам понадобится какой-нибудь кластер или балансировщик, который позволит перенаправить пользователей на новую версию и через некоторое время отключить старую версию. Альтернативой может быть график перезапуска на некоторое время с малым трафиком (например, ночью).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .