マルチサイト環境のWordPressで、モバイル用プラグイン「WP touch」を1.9.8に更新すると、サイトネットワーク管理がエラーで使えなくなることがあるようです。
私のWordPressでは、Fatal error: Call to undefined function wp_get_current_user() in …/wp-includes/capabilities.phpというエラーが出ました。

管理画面が使えなくなるのでプラグインの無効化もできず、直すには手動でWP touchを消す必要があります。
私はwp-content/plugins/wptouchの名前を変えて対処しました。

何かを更新する際は、本当に必要かを考えて慎重に行いましょう。

WordPressを動かすとApacheがメモリを食いつぶす“でApacheのMPMをpreforkに変更しました。

あれから1週間経ちましたので、現在のApacheのメモリ消費状況を載せてみます。

MaxRequestsPerChildは100で設定しています。

40MB~50MB使っているプロセスが10個なので、合計600MB程度で見積もっていればよさそうです。

どっちかといえば、clamdやspamdのほうが目立っています。

これらの定期的な再起動を考えたほうがいいかもしれません。

 

えーっとやっていることがとてもややこしく、検索でたどり着けるような記事を書けるか自信がないのですが。

・ひとつのWordPressで複数サイト/ドメインを運用している

・ドメインごとに特定URLへのアクセスはWordPress外の別コンテンツとしてアクセスさせたい

といったことを実現する方法です。

 

例をあげると、ひとつのWordPressで運用されているドメイン

http://hoge.com/、 http://hage.net/

があり、そのうえでWordPressとしては同一のサブディレクトリへのアクセスになる

http://hoge.com/test/、  http://hage.net/test/

をWordPress外のそれぞれ独立したコンテンツとしてアクセスさせるやり方です。

 

Continue reading

WordPressを入れていろいろ設定をしていたら、だんだん応答が遅くなってきました。

作業用ssh端末のほうもコマンドの反応が悪くなってきたので、topコマンドで調べてみました。

Shift+Mでメモリ使用量順に並べてみると、Apacheのプロセスhttpdが上位にずらっと。

5つあるhttpdのうち4つがそれぞれ約400MBほど消費し、2GBある実メモリが使い切られてしまっています。

 

再現は簡単で、キャッシュプラグインW3TCの設定セーブを繰り返すだけです。

メモリをじゃぶじゃぶ消費していく様子が分かります。

入れていたプラグインの中で重そうなのを選んでみましたが、別のプラグインでも似たようなことになるのかもしれません。

 

とにかくこんなにメモリを食いつぶされていたら使えない、ということでいろいろ調べてみました。

どうやらWordPressとは基本的にメモリを大量に使うものらしいです。プラグインを大量に入れると大変なことになることもあるとか。

大量のメモリをロックしたプロセスが居座らないよう、Apacheのconf/extra/httpd-mpm.confでMaxRequestsPerChildを設定してみたのですが、どうも効果がないようで。

 

仕方がないのでApacheのMPMをworkerからpreforkに変更することにしました。

ソースからコンパイルしたApacheを使っていますので、configureからやり直します。

変更点:–with-mpm=worker →  –with-mpm=prefork

 

これで例の設定セーブを繰り返しても、実メモリの消費が600MBほどで止まるようになりました。

起動するプロセス数を調整すればもっと減らせそうです。

次の問題は、workerからpreforkにしたことでパフォーマンスへの影響がどれぐらいあるかですね。

PHPを使うならpreforkがいいという話もありますし、影響がないことを期待したいです。