前回はWordPressプラグインの変更によるWordPress高速化の結果を紹介しました。
今回はもう少し高速化を目指してWebサーバの調整をしたいと思います。
Nginxのプロキシキャッシュ
このブログではWebサーバにNginxを使用しています。
このNginxにはプロキシキャッシュ機能があり、この機能を使うことによってWebのレスポンスをあげることができます。
このプロキシキャッシュ機能は、Webサーバのレスポンスを一時的にディスクに保存しておいて、2回目以降のアクセスではそのディスクにあるレスポンスを返します。
従って、2回目以降のアクセスではWordPressの処理がなくなるのでレスポンスがよくなるという訳です。
しかし、WordPressの処理がなくなる代わりに、ディスクへの読み書きが多くなるという副作用もあります。
ディスクの読み書きは処理に時間がかかるほか、他のプロセスの処理を妨げることにもなり全体的な性能を落とす可能性が出てきます。
RAMディスク導入
今回はこの副作用を避けるためにRAMディスクを導入してみます。
RAMディスクであればデータの読み書きが発生してもHDDの読み書きが発生しないため、他の処理を妨げることがなくなります。
実は以前に同じ目的でRAMディスクを導入したことがあります。
しかし、OSのアップデートなどでRAMディスクの設定が消えてしまったらしく、今回やり直すことにしました。
RAMディスクの確認
最近のLinuxではデフォルトでRAMディスクが有効になっていることが多いと思います。
dfコマンドでRAMディスク(tmpfs)がマウントされてるディレクトリとサイズを確認しましょう。
$ df -h | grep tmpfs tmpfs 202M 21M 181M 11% /run tmpfs 1006M 129M 878M 13% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 1006M 0 1006M 0% /sys/fs/cgroup tmpfs 202M 0 202M 0% /run/user/1000
多くの場合は/dev/shmに実メモリの半分ぐらいのサイズのRAMディスクがマウントされているはずです。
今回は面倒なのでここを使ってしまうことにします。
プロキシキャッシュの設定変更
/dev/shmにRAMディスク(tmpfs)がマウントされていることがわかったら、Nginxの設定を変更します。
/etc/nginx/sites-availableにある設定ファイルのproxy_cache_pathを変更します。
proxy_cache_path /dev/shm/nginx/scratchpad.jp levels=1:2 keys_zone=scratchpad.jp:64m inactive=4h max_size=128m;
変更点はキャッシュに使うディレクトリを /dev/shm/nginx以下にしたことです。
ファイルを変更したらこの変更を反映させます。
$ sudo service nginx reload
これで完了です。
RAMディスクを利用する効果
RAMディスクを使うようにしてみたところ、体感ではそれほど差は感じません。
しかし、HDDのレイテンシ(読み出しが待たされる量)のグラフを見ると、RAMディスクの利用前後で大きく変わっていることがわかります。
グリーンのグラフがそれまでキャッシュを保持していたHDDなのですが、キャッシュをRAMディスクに逃がした以降はレイテンシが低下していることがわかります。
これは他のプログラムが動作する場合に待たされることが減ったと言うことです。
もちろんWordPressが待たされる時間も減るはずなので、少しはレスポンスは向上している・・・はずです。
まとめ
今回はWordPressの高速化を目指してNginxのプロキシキャッシュにRAMディスクを使用する設定を行いました。
キャッシュ中のデータをRAMディスクにおくことでHDDのアクセスを減少させることできます。実際にデータを見るとRAMディスクを利用するようになってからディスクアクセスのレイテンシが減少しました。
次回はフリーのファイル復元ソフトEaseUS Data Recovery Wizardを紹介します。
コメント