WordPressをt2.microで運用するメモ

WordPressをt2.smallで運用していたんですが設定を見直してt2.microにしました。OpsWorksを使って構築してるんですが、OpsWorksエージェントのメモリ使用量が案外多く仕方なくt2.smallにしてました。昨日せっかくPHP7も触ったりしてたので、良い機会なのでついでに無料枠内にダウンサイズします。自分用メモです。

メモリ使用量の多いプロセスを特定

t2.microで運用が難しかったのは1GBのメモリが厳しかったからなので、まずメモリの使用状況を把握します。htopコマンドでメモリ使用量の多い順にプロセスを確認しました。するとなんと上位6プロセスがOpsWorksエージェントなんですよね…。400MB程度占有してしまっているんですが、これはどうしようもないので放置します。

NewImage

次にメモリ使用量が多いのはphp-fpmでした。php-fpmのwww.confの設定がデフォルトだと負荷に応じてプロセスが最大50まで増えるようになっています。

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

これをざっくり少なくしました。これで負荷が増えても最大5プロセスまでなのでメモリの消費量を抑える事ができます。

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 5

あとは、自分の環境だとwp-content配下のファイルをLsyncdでS3に同期するようにしてたんですが、ファイル数が多いプラグインをインストールしたりすると同期用のコマンド(AWS CLI)が同時に多数立ち上がってこれもメモリを圧迫してました。

lsyncd.confのmaxProcessesをざっくり少なくします。

settings {
  logfile = "/var/log/lsyncd.log",
  statusFile = "/tmp/lsyncd.stat",
  maxProcesses = 1,
}

PHP7 + OPcache の構成へ変更する

昨日のベンチマークの結果からPHP5.6よりもPHP7のほうが性能が良いことが明らかだったのでこれを機会にPHP7にしました。

Loader.ioで性能を測定する

さっそく性能を測定します。

NewImage

プロセス数をかなり絞ったので少し不安でしたがそれなりに捌けてました。

NewImage

メモリは90%くらい消費したところで留まってくれてます。これで安定してAWSの無料枠内で運用できそうです。