問題 1: Apache が毎日特定の時間に 1 分以内に 50% 以上のメモリを消費する
Apache ログを検証し、コードのすべてのファイルを確認することでこの問題を詳細に確認しましたが、コード ファイルは 24 時間 365 日実行されているため問題はありませんが、メモリ消費時間は日によって異なります。
cron のタイミングも確認しましたが、同時に cron は実行されませんでした。
ここでは、/etc/apache2/mods-available/mpm_prefork.confで設定したApacheサーバーの設定の詳細も示しています。
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
ServerLimit 128
MaxClients 128
MaxConnectionsPerChild 100
問題 2: 時間が経つにつれてサーバーがすべてのメモリを消費し、24 時間以内にサーバーを再起動する必要がある
サーバーが xxxMB のメモリを消費すると、そのメモリを解放できなくなり、30 分ごとにチェックすると +/- 50MB の変動がありますが、ほとんどの場合、スムーズに減少し、24 時間以内にメモリがなくなります。
top または htop コマンドを実行すると、Apache が最上位に表示されるだけなので、Apache がメモリを多く消費しているというイメージしか得られず、現在どのプロセスがメモリを消費しているかは正確にはわかりません。古いプロセスがそのメモリを解放していないようです。
ご参考までに:
- Ubuntu 16にApacheをインストールしました
- このApacheサーバーでは1つのPHPウェブサイトが稼働しています
- サーバーには 2GB の RAM が搭載されています。以前は 1 GB でしたが、それでも問題は解決されていません。
- ウェブサイトは 1 か月前までは正常に動作していました。この期間までにコードまたはサーバー側で大きな変更は行っていません。また、多くが元に戻されているため、以前とほぼ同じです。ライブ ユーザーの数も先月まで増加していません。
正確な問題を追跡して修正するのを手伝ってくれる人はいますか?