【VPS】Apache+MySQL+PHP-FPMで高速化チューニング

2017-05-29

NGINXで実行するとかなり高速化するという意見が多いのですが
当たり前の話ですが設定をきちんとしなければ実はApacheより遅い
という結果が私の構築しているサーバでは出ました。
そこでApacheとPHP-FPM、MySQLのチューニングをして見ることにしました。

Apacheのチューニング

基本は、メモリを使いすぎてSWAPを利用しだすと遅くなるため
SWAPを利用しないで動くようにメモリ関連とプロセス数関連を
チューニングしています。
vi /etc/httpd/conf/httpd.conf
[html]
StartServers 8
MinSpareServers 5
MaxSpareServers 10
ServerLimit 256
MaxClients 50
MaxRequestsPerChild 1000</code>
Timeout 30
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
‘最終行へ追加
BufferedLogs On
[/html]

PHP-FPMの設定変更

PHP-FPMを導入してApacheでPHPをちょい高速化してみました。
デフォルトでインストールしただけだとプロセス数も結構な数で
メモリもかなり消費してしまっていたので設定変更を実施しました。
vi /etc/php-fpm.d/www.conf
[html]
pm.max_children = 10 ‘デフォルト50
pm.max_spare_servers = 10 ‘デフォルト35
[/html]

mysqlの設定変更

MySQLの設定変更に関しては過去記事にしているのでそちらを参照してください。
具体的にはSQLのキャッシュ機能を利用して同一ページのリクエストなどPVが多い記事は早く表示されるようなチューニングをしています。

チューニング結果

デフォルト設定のまま何も考えずに稼働していると私の環境では空きメモリは70MB程度と
あと何かが動いてしまえばあっという間にSWAPという状況でした。今回のチューニング後に1つ1つサービスを起動しながらメモリ状況を確認して行きましたのでその結果を、公開したいと思います。
PHP-FPM起動後
PHP-FPMを起動した直後のメモリ状況です。
上記画像を参照して頂ければわかりますがかなり空いています。※約880MB空き
02_mysqld起動後
MySQL起動後のメモリ状況です。単体のプロセスではMySQLがメモリを一番消費するサービスとなっています。※約827MB空き
03_HTTPD起動後
httpd(Apache)を起動した直後のメモリ状況です。まだこの時点ではプロセス数も8個と落ち着いている状況です。※約749MB空き
04_LoadImpact後
LoadImpactのサービを利用し同時接続のテストを実施しテスト終盤に取得したメモリ状況です。※約486MB空き
LoadImpact実行時の結果

  • Auto-generated (2013年7月23日 8:56:37) - Load Impact - On Demand Website Load Testing and Performance Testing ServiceAuto-generated (2013年7月23日 8:56:37) – Load Impact – On Demand Website Load Testing and Performance Testing Service

プロセスの設定やメモリキャッシュの設定を少し変更(追加)してあげるだけでパフォーマンスやサーバのメモリ状況が随分と変わることがわかります。最近のPCなどはメモリも贅沢に搭載していますがメモリ1GBプランのVPSサービスでもそれほどアクセス数の多くない私のサイトであれば十分余裕を持って稼働させれることがわかりました。

GTMetrix計測結果

測定結果をPDFにて公開しておきます。スコアはあまり変わりませんが速度がだいぶ違うっぽいけどこれって画像ファイルのキャッシュ関連なのかな?遅いファイルはMicrosoftのLive.comから引っ張ってるバナー広告のイメージです。
NGINXにて計測した結果
Apache-チューニング前の結果
Apache-チューニング後結果


こんな記事のリクエストからディズニーランドに一緒に遊びに行きませんか?というお誘い、写真を一緒に撮りに行きましょうというお誘い、誤字・脱字をはじめ全てのお問い合わせは、こちらへお願いします。
定期的な購読はRSSにご登録お願いします。
掲載している写真の個人的利用、保存はOKですが、複製、再利用、営利目的の利用は禁止です。