さらにチューニングを進めていきましょう。
CentOS 7が標準で採用するMySQL互換のデータベース管理システムである「MariaDB 5.5」は、デフォルトのストレージエンジンとして「InnoDB」を採用しています。今回は、WordPressをInnoDBで運用する場合に効果のある、2つのパラメータを設定します。
/etc/my.cnf.d/server.cnfを編集して、[mysqld]のセクションを以下のように修正して保存してください。
[mysqld] innodb_buffer_pool_size = 512M query_cache_size = 64M
MariaDBを再起動して設定を反映させます。
[root@ip ~]# systemctl restart mariadb
Webブラウザでトップページをリロードします。先ほどと同様に初回は少し時間がかかりますが、二度目以降はページのロード時間が高速になっていることが確認できます。筆者の環境では、64ms前後になりました。同じくabコマンドでのベンチマークでは、Requests per secondが31.82となりました。
5パーセントほどですが、この設定によってパフォーマンスがさらに改善されました。ここでは、主にクエリキャッシュの設定が寄与しています。
クエリキャッシュは、一度発行された参照系クエリ(SELECT文)の実行結果をメモリ上にキャッシュしておいて、同じクエリが発行されたら、その結果を再利用することによってデータベースの実行速度を向上させるものです。PHPアクセラレータと同じく、データベースの更新によってクエリの結果が影響を受ける場合には、キャッシュは破棄されます。クエリキャッシュの有効/無効によってクエリの結果が変わることはありません。
なお、クエリキャッシュはデフォルトでは無効になっています。上記server.cnfのquery_cache_sizeに任意の値を設定することによって有効となります。
もう1つのパラメータであるinnodb_buffer_pool_sizeは、InnoDBのデータやインデックスなどをキャッシュするためのメモリ領域のサイズです。CentOS 7の MariaDB 5.5では、デフォルトで128MBになっていますが、今回は512MBとしました。MyIsamと異なり、InnoDBはOSのディスクキャッシュを利用しない設計になっていますので、この値は大きければ大きいほどクエリの実行で有利に働きます。
この2つのパラメータは、今後1年間のWordPressの運用で見込まれるデータベースサイズの最大値を「X」とした場合、query_cache_sizeはXの10%以上、innodb_buffer_pool_sizeはXの120%以上となる値に設定するのが目安です。今回は運用時のデータベースサイズの最大値を400MBと想定して、query_cache_sizeを64MBに、innodb_buffer_pool_sizeを512MBに設定しています。
なお今回の結果が数%増程度であるのは、インストール直後のWordPressのデータベースサイズが160KBほどと、ほとんどデータがない状況だからです。実際の運用では、コンテンツの追加や更新に伴ってデータベースサイズは増え、プラグインで機能を追加していくことで発行クエリ数も増大していきます。そうなると、パフォーマンスの違いが10倍(10%ではありません。1000%です!)以上になるケースも珍しくはありません。運用が進むにつれて「この2つのパラメータがとても重要になる」ことをぜひ念頭に置いておきましょう。
ちなみに、ストレージエンジンがMyIsamの場合でもクエリキャッシュは大きな効果があります。しかし、その他のパラメータについては、InnoDBとは全く異なる設定が必要です。InnoDBがデフォルトのストレージエンジンである環境にWordPressを新規にインストールすれば、全てのテーブルがInnoDBで作成されますので、今回紹介する手順のままで問題ありません。一方、もし他のWordPress環境から移転などでデータをインポートするような環境の人は注意が必要です。インポートの前後に、実際の各テーブルのストレージエンジンがInnoDBになっているかを確認するようにしてください。
ここまでのチューニング内容 | ページのロード時間 (デフォルト環境比) |
1秒当たりの同時アクセス数 (Requests per second) |
---|---|---|
デフォルト環境 | 176ms | 11.24 |
APCの導入 →チューニング方法をおさらい |
70ms(約251%) | 29.20 |
OPcache+APCuを導入 →チューニング方法をおさらい |
66ms(約266%) | 30.51 |
MariaDBの設定を調整 →チューニング方法をおさらい |
64ms(約275%) | 31.82 |
Copyright © ITmedia, Inc. All Rights Reserved.