ApacheとMySQLをどのくらいの頻度で再起動する必要がありますか(特に毎週15万ヒット)、特定の時間ごとに再起動すると実際にどのようなメリットがありますか?
ApacheとMySQLをどのくらいの頻度で再起動する必要がありますか(特に毎週15万ヒット)、特定の時間ごとに再起動すると実際にどのようなメリットがありますか?
回答:
ApacheとMySQL自体には、メモリリークがないはずです。ほとんどのデータベースサーバーは、稼働時間を長くすればするほどうまく動作します。ただし、PHPのようにApacheにコンパイルされるモジュールには、多くの場合、メモリリークがあります。
ApacheのMPMモジュールが自動的万のリクエスト後のプロセスをリサイクルしています。を別の値に変更できMaxRequestsPerChildますが、デフォルトは10,000です。
Apacheは定期的に再起動する必要はありません。MySQLも同様です。
preforkモードで実行されているApacheは、MaxRequestsPerChildを使用して子プロセスをリサイクルできます。遅いメモリリークなどを防ぐので、これは良いことです。
MySQLを再起動するとサービスが停止するため、MySQLを定期的に再起動しないでください。MySQLを再起動すると、エンジンが起動するまで待機する必要があり、また、キャッシュがクリアされるため、ウォームアップするまでパフォーマンスが低下します。アドレス空間の断片化のため、時々再起動する必要があるようです[1]が、これは64ビットシステムではそれほど発生しないはずです。
[1]たとえば、1秒あたりの平均クエリ数が100を超えるビジーサーバーで9か月ごと
システムまたはサービスをいつ再起動する必要があるかを理解するには、まずその理由を理解する必要があります。最も一般的な理由はメモリリークですが、不適切に作成されたソフトウェア(あまりにも一般的すぎる!)など、適切でない場合にファイルハンドルを閉じるなど、適切な内部ハウスキーピングを実行しないものもある可能性があります。メモリリークと同じではありませんが、症状は同じです。ApacheとMySQLはどちらも非常に安定していることがわかっており(アルファ版またはベータ版を実行している場合を除く)、何年も問題なく実行できます。通常、オペレーティングシステムは、いずれかのアプリケーションがパッチを要求する前に、パッチを適用するために再起動する必要があります。