Blog用WebサーバーをLightsailに引っ越しして2週間くらい動かしましたが、メモリリークを起こして度々止まっていることがあります。いままで使っていたさくらのVPS CentOS6+Apache2.2は月に2回SSL証明書の更新処理のついでに再起動するだけで安定稼働していたのですが、今回は1日持たずに落ちていることがあり、どうも不安定です。
根本原因がわからないので、暫定策として以下を実施することにします
・Swapメモリを2GB→4GBに増加
・1時間に1回 httpdのgracefulリロード
・1日に1回 httpdのリスタート後、Swapメモリのクリア、メモリ状況を自分宛にメール
知らなかったのですが、restartとgracefulは動きが違うようで、restartは強制的に再起動、gracefulは現在の処理が終わってから安全に再起動できるということで、毎時gracefulを実行することにしてみました。これでしばらく様子を見てみます。
1. 2GB Swap削除、4GB Swap再作成
$ sudo -i # swapoff /swapfile # rm /swapfile # dd if=/dev/zero of=/swapfile bs=1M count=4096 # mkswap /swapfile # swapon /swapfile # chmod 600 /swapfile
2. cronで定時reload(graceful)処理追加
※注:私のhttpd2は reload = gracefulの動作をする設定です。
# vi /etc/cron.d/dailyjobs ----------------------------------- . . # run-parts 00 * * * * root /bin/systemctl reload httpd2 05 3 * * * root /bin/systemctl restart httpd2 && swapoff -a && swapon -a && free -h . . ----------------------------------- :wq
# systemctl restart crond
HTTP/2を有効にするためにApache2.4.37のMPMはpreforkではなくworker(なぜかeventが無い・・・要調査)で動かしているのですが、チューニングが必要かもしれません。
おまじないで、mpm_workerの設定をちょっと修正。数値に根拠はありません。
# vi /usr/local/httpd2/conf/extra/httpd-mpm.conf ----------------------------------- . . <IfModule mom_worker_module> StartServers 1 MinSpareThreads 25 MaxSpareThreads 100 ThreadsPerChild 25 MaxRequestWorkers 100 MaxConnectionsPerChild 2000 </IfModule> . . ------------------------------------ :wq
# systemctl reload httpd2
レンタルサーバーみたいにWebサーバーを安定的に維持運用するのって、すごい事なんだなぁ・・・と感じる今日この頃です。