私は、Apache httpd、redis、php-fpm を組み合わせて、リソースを大量に消費する Magento ベースのサイトを運営しています。
コア PHP ファイルに変更を加えた場合は、Magento を台無しにする可能性のある (実際に台無しにする) 古いコードがキャッシュされていないことを確認するために、上記のサービスを再起動する必要があります。
以前、httpd だけを使用していたときは、service httpd graceful
サイト訪問者に影響を与えずに正常に再起動するだけで済みましたが、現在は複数のサービスを再起動する (および redis をフラッシュする) 必要があるため、Web サイトが数秒間利用できなくなります。
これを避けることは可能ですか?
答え1
アパッチを見てみるとドキュメンテーションApache がシグナルをこのために使用していることがわかりますUSR1
。これはカスタム ルーチンです。他のコンポーネントのドキュメントをチェックして、同様のオプションが提供されているかどうかを確認する必要があります。php-fpm のヒット例は次のとおりです。他のプールに影響を与えずにPHP-FPMプールの1つをリロードできますか?。
コンポーネントの 1 つにそのようなオプションがない場合、単一のサーバー/サイトでは実行できません。ユーザーを新しいバージョンにリダイレクトし、しばらくしてから古いバージョンをオフにできる、何らかのクラスターまたはバランサーが必要になります。別の方法としては、トラフィックの少ない時間 (夜間など) に再起動をスケジュールする方法があります。