GCEで定期的にページの読み込みに時間がかかったときの対処法

PHP, インフラphp-fpm, インフラ, チューニング, メモリ


Notice: Trying to access array offset on value of type bool in /var/www/html/wordpress/wp-content/plugins/internal-link-building-plugin/internal_link_building.php on line 86

Notice: Trying to access array offset on value of type bool in /var/www/html/wordpress/wp-content/plugins/internal-link-building-plugin/internal_link_building.php on line 105

はじめに

このブログは、GCPの中のGCEを使って立ち上げております。スペックを抑えているため限られたメモリの中でPHP,Nginx,MySQLを動かさなければならないです。これまで、それぞれのチューニングを行い動作していましたが、一部の設定が良くなかったために定期的にページの読み込みに時間がかかってしまいました。GCEの無料枠の中でPHP,Nginx,MySQLを動かすために行ったチューニング法に関しては、後日別記事にて紹介をしたいと思います。

原因はphp-fpmの設定に問題があった?

自分の環境は、限られたメモリの中で動いており、メモリが不足であればswap領域に書き込みが発生し、ディスクの書き込み・読み込みで時間がかかってしまうことになります。おそらくここに問題があると目星をつけました。
アクセスしたときに、ps コマンドを実行して、どのようなプロセスでメモリを消費しているかを確認したところphp-fpmの子プロセスがたくさん作られていました。この部分をなんとかしたいと思いました。

php-fpmの設定ファイルの見直し

まずは、php-fpmの設定ファイルの子プロセス数がどのようになっているかを確認しました。ファイルは、自分の環境ですと、/etc/php-fpm.d/www.conf にありました。子プロセス数を減らしたいので、 pm.max_children の部分を確認したところ50になっており、最大で子プロセスの数が50になるようでしたので、減らしてphp-fpmの再起動を行い、free等で使用メモリが少なくなったことを確認して様子を見たところ、定期的にページのアクセスに時間がかかる減少はなくなりました。