前回SWAPのチューニングをして少し安定化したのですが、一定時間経つとやはり挙動不審になるのでさらなるメモリ節約に取り組むことにしました。
Apacheがやばい
以下はTOPコマンド起動後 SHIFT+Mでメモリ使用量順に並べたものです。ずらっとapache2が並びます。SHRも大きめなので実際に確保されている物理メモリ量は少なそうですが、VIRTがそれぞれ300MB前後となっており、メモリに対してすくなからず影響がありそうです。そもそもこんなに並べるのはやめてくれ。
すべては応答速度向上のため
どうやらApacheには自動で子プロセスを立ち上げたり殺したりする機能があり、これによって自動でプロセスが立ち上がるようです。設定は/etc/apache2/mods-available/mpm_prefork.conf に記載があります。
root@f7a659fd949b:/etc/apache2/mods-enabled# cat mpm_prefork.conf StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 150 MaxConnectionsPerChild 0
最大で150プロセスまで立ち上がる?
コンフィグをコンテナから外だしにしてマウントさせることにしました。
$ sudo docker cp docker_wp01_1:/etc/apache2 ./app/wp01/etc/
docker-composeファイルは以下
$ cat docker-compose.yml version: "2" services: wp01: image: wordpress:latest ports: - 32701:80 environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_PASSWORD: password WORDPRESS_DB_NAME: wp01 restart: always depends_on: - db volumes: - ./app/wp01/html:/var/www/html - ./app/wp01/etc/apache2:/etc/apache2
コンフィグは以下 勝手に増えないように全てを5に設定
$ vi etc/apache2/mods-available/mpm_prefork.conf StartServers 5 MinSpareServers 5 MaxSpareServers 5 MaxRequestWorkers 5 MaxConnectionsPerChild 0
WEBサイトが遅くなったのではないかと思われるかもしれませんが、一人がアクセスするぐらいでは、遅くなったことを体感できませんでした。これによって運用が続いても動作が安定するようになりました。
“WordPress DockerコンテナのApacheの子プロセス生成を制御してメモリを節約する” に1件のコメント