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

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

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

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

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

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

 

Linuxのパッケージ管理に使われるyumコマンド。

コマンド名でyum install/searchしてみて出てこない場合、そのコマンドが入っているパッケージを探すwhatprovidesが使えます。

 

例:whoisコマンド

とりあえずinstallしてみる
# yum install whois
...
No package whois available.
Error: Nothing to do

 

見当たらないのでwhatprovidesでコマンドがありそうなパスを指定して探す
# yum whatprovides '*/bin/whois'
...
jwhois-4.0-19.el6.x86_64 : Internet whois/nicname client
Repo : base
Matched from:
Filename : /usr/bin/whois

 

whoisはjwhoisの中にありました。

この場合searchすれば出てきますけどネ。

まだ稼働して2週間も経っていないこのサーバですが、logwatchからのレポートにメールアカウントを探るアタックがありました。

——————— vpopmail Begin ————————

No Such User Found:
aiden@v157-7-129-206.myvps.jp – 1 Time(s)
alexander@v157-7-129-206.myvps.jp – 1 Time(s)
benjamin@v157-7-129-206.myvps.jp – 1 Time(s)
ethan@v157-7-129-206.myvps.jp – 1 Time(s)
jack@v157-7-129-206.myvps.jp – 1 Time(s)
jackson@v157-7-129-206.myvps.jp – 1 Time(s)
jacob@v157-7-129-206.myvps.jp – 1 Time(s)
james@v157-7-129-206.myvps.jp – 1 Time(s)
jayden@v157-7-129-206.myvps.jp – 1 Time(s)
liam@v157-7-129-206.myvps.jp – 1 Time(s)
logan@v157-7-129-206.myvps.jp – 1 Time(s)
lucas@v157-7-129-206.myvps.jp – 1 Time(s)
mason@v157-7-129-206.myvps.jp – 1 Time(s)
matthew@v157-7-129-206.myvps.jp – 1 Time(s)
noah@v157-7-129-206.myvps.jp – 1 Time(s)
ryan@v157-7-129-206.myvps.jp – 1 Time(s)
william@v157-7-129-206.myvps.jp – 1 Time(s)

———————- vpopmail End ————————-

/var/log/maillogの該当ログを確認。

Aug 26 22:31:38 v157-7-129-206 vpopmail[9547]: vchkpw-smtp: vpopmail user not found aiden@v157-7-129-206.myvps.jp:174.142.222.3

 

放置していると面倒なことになりそうなので、Swatchを入れて監視・ブロックすることにしました。

手順はこちらを参考にしました。

ログ監視ツール導入(SWATCH) – CentOSで自宅サーバー構築

 

このサーバではPerlのモジュールが足りないらしく、/var/log/swatch/swatch.logにこんなエラーが出ました。

Can't locate File/Tail.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /tmp/.swatch_script.11953 line 90.
BEGIN failed--compilation aborted at /tmp/.swatch_script.11953 line 90.

 

あとはatコマンドもないようなので一緒にインストール。

# yum install at perl-File-Tail

で解決。

 

/etc/profileには、bashの環境変数やPATHなどのデフォルト設定が書かれています。

データベースや開発用言語の設定など、共通で使いそうなものはここに書くと楽になります。

 

デフォルトのbashの場合、共通で読み込まれるファイルはこうなっています。

ログイン時に1回:/etc/profile

シェルを起動するたび:/etc/bashrc

ログアウト時:/etc/bash_logout

 

cshの場合など、ここに詳しい情報があります。
Linux/環境変数の設定 – Linux UPK

RedHat系では拡張されてさらに便利になっていますね。

 

もう全ユーザーの設定を書き換えて回らなくてもいいんだよ!

 

お名前.comのVPS(KVM)は、サーバーNaviからブラウザ上でコンソールをいじれるようになっています。

そろそろ無料期間が終わろうかというところですが、いつの間にかブラウザ上のコンソールが動かなくなっているようです。

設定をいじっている間に大事なところをなんかしちゃったかなぁ・・・。

 

実用上はputtyなどのターミナルソフトからも同じことができるようになっているので、ブラウザからできなくなっても問題なさそうです。

個人的には元々ブラウザで操作するつもりはないですし、放置でいいかなぁと考えてマス。

 

大丈夫だ、問題ない。

Posted in VPS.

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

・ひとつの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がいいという話もありますし、影響がないことを期待したいです。