LoginSignup
8
7

More than 5 years have passed since last update.

GCEにWordPress乗っけたらメモリが足りなかった件(解決済み)

Last updated at Posted at 2017-03-26

サイトを移転してから暫く悩んでいたんですが、解決してみたらあっけなかった。

Google Compute Engineはご存知の通りスペックがピンからキリまであるのですが、個人ブログを運用する程度ならもちろん一番安いスペックでも十分です。チューニングをちゃんとすればね!

2017/3/27 表現改訂と追記。
2018/3/2 Event MPMのチューニング話を追記

Crucialな解決策

Swap領域増やそう。

GCEの一番安いやつはメモリ0.60GBです。

スワップ領域は一般にはメモリの2倍程度あれば良いらしいですが、デフォルトでは200MB程度しかありません。

これだとWPの管理画面をうろうろするだけで500エラーが頻発します。カツカツなんで自然回復待ちだと何十分もサイトが落ち続けるし、再起動でもまたすぐにApacheの所為で逼迫して定期再起動が必要になります。

Swap領域の増やし方はググろう。
メモってなかったらインスタンス再起動でスワップが吹き飛んでしまって困った。下のページが参考になります。
http://landisk.kororo.jp/debian/14_swap.php

虚しい失敗策の数々

PHPのmemory_limitを上げる

元々128Mと結構大きめに取っていましたが、256Mに上げました。

Apacheの調整

KeepAlive周り。しかし初期値で既に最適化されていました。

MySQLの調整

キャッシュやバッファの値を調整。

restartだとエラーが出るので、ApacheもMySQLもstopしてから起動させる。

Zend OPcacheの有効化

メモリに効くかどうかわかりませんが高速になると聞いてやってみました。実際速くなりました。

zend_extension=/... は書くと「既に読み込まれている」旨のエラーが出たので削除。

参考にしたページのリンクだけ書いておきます。

Event MPMにする

スレッドセーフにPHPをコンパイルしてあったのでWorkerにしてみよう、と思ったらデフォルトで更に進化版のEventになっていました。

Apache2.4からはデフォルトでEvent MPMになってるのに気付かなかった話

最初に書いた「Apacheの調整」はWorker向けのだったので無駄でござった。

Eventの方でも少しずつ値を変えてチューニングしていましたが、結局決定打はSwapという…。

追記

記事投稿直後に頻繁に落ちるのでtop等でプロセス数の推移など観察してみた所、
やはり1番安いマシンではしんどいところもあるようです。

私の環境では結局以下のようにすることで、
投稿直後はCPU利用率が高くなり落ちることもありますが、2分程度以内に復旧するようにはなりました。

<IfModule mpm_event_module>
        StartServers             1
        ServerLimit              8
        ThreadLimit              4
        ThreadsPerChild          4
        MinSpareThreads          4
        MaxSpareThreads          16
        MaxRequestWorkers        32
        MaxConnectionsPerChild   0
</IfModule>

そんなに重い処理をするようなサイトではないはずなんですが、自作コードがそこらじゅうにあるので何かしらが足引っ張ってるのかも。
重くなるの投稿公開・編集した時だけだし。

独り言

もうちょっとやった操作とかメモ残しとけば良かった。
分類できなかった参考リンクだけメモ代わりに置いておきます。

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7