Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

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>

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

独り言

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away