wordpressのブログ表示が極端に遅い。はっきり言って、非力なPCで作ったバーチャル環境の方がよほど早い。
こういうのってSEOにも影響するし、普通に利用ユーザーはブログの質が悪いと判断されてしまう。
インターネットって回線速度とセットで考えられるので、こうした所もチューニングできないと、エンジニアとしては、イマイチと思われてしまうんでしょうね。
そもそも、「wordpressってmysqlを高速化すればいい」とだけ考えていたのですが、実はPHP部分のチューニングも必要だったんですね。
チューンナップ&メンテナンスがいかに重要化を体験できたので、備忘録記事にしておきます。
現状の問題点
そして、外部サーバー監視のエラー報告が、都度飛んでくる。
サバモニ
サーバーターミナルで確認してみると、
・LAが異常に高くなっている(50近く)
・1ページのアクセス時間が非常に遅い(1分超えの場合もしばしば)
・httpアラートが頻発
原因もなんとなく分かっているんだが、nginxとphp-fpmをインストールしてチューンナップせずに使っているので、ユーザーアクセス時に無駄な負荷がかかっている&開放タイミングが遅すぎるのだろう。
これらの設定チューニングは今までやったことがないので、自分なりの正解設定を探ってみることにする。
環境
OS : CentOS release 6.9 (Final)
Nginx : ver 1.12.1
PHP-FPM : ver 7.0
--
CPU : Intel Xeon E312xx (Sandy Bridge) 2.4GB x 1コア
Mem : 512MB
Storage : SSD 20GB
先日設定したwebArenaのVPS環境です。
VPS検証「NTTPC – WebARENA」の無料テストで公開サーバー品質テスト
設定
今回セットした内容は以下の通りです。
さほど多くないセットなんですが、CPU数や環境スペックによって値は大きく変わる可能性があるので、これを参考にする人は、色々と負荷テストを行なって最適値を求めてください。
Nginx
$ vi /etc/nginx/nginx.conf
# デフォルトをコメントアウト
#keepalive_timeout 65;
# keep-aliveを短めにセット(1や2でもいいかも)
keepalive_timeout 5;
PHP-FPM
$ vi /etc/php-fpm.d/www.conf
# max_children数のデフォルト50を10に変更
;pm.max_children = 50
pm.max_children = 10
上記2点のみの修正だったのだが、ページのアクセスタイムが2sを切る事が可能になった。
おそらくキープアライブの設定が効いたんでしょうね。
アクセスユーザーがずっとプロセス保持されていて、開放タイミングがおそすぎたんでしょうね。
チューンナップの考え方
チューンナップは、WEBページに対して、アクセス負荷テストを行なって、遅延TIMEを計測したり、そのタイミングが数分継続した時のサーバーのLA値の上昇度合いなどを、レポーティングしながら、最適値を決めていきます。
多くのサイトに、CPU数、メモリ数を元に計算する方法などが、掲載されていますが、僕の経験では、WEBサービスであれば、keepaliveだけでかなりの改善ができるはずです。
一番の駄目パターンは、今回のように、インストールしたままのデフォルト値のままという事でしょう。
あと、負荷計測テストも導入時に怠っていますね。
もっと言えば、引越し前サーバーとのベンチ比較もやっていないので、今回の遅延を招いたのは必然だったのでしょう。
とりあえず、テスト手順なども確立してブログ化しておかないといけませんね。
0 件のコメント:
コメントを投稿