Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

WordPress高負荷対策→同一ApacheのIPのアクセス数制限@CentOS 5

      2011/10/08

一日に数回サーバ高負荷で応答がなくなってしまって困っていました。load average 90超え!!ありえん・・・
低性能なサーバなのに、大してApacheもMySQLものチューニングしていないからなあ・・・

ということで、最初はWordpressがアクセスしているMySQLが重たいのではと思い、メモリや接続数を少なくしてみたが効果なし。ということで、基本に戻って、まずは現状把握から。

sysstat パッケージでsarによる性能情報収集を開始し、topの結果を数秒おきにログに保存、さらに長い時間がかかるSQLもログに記録するようにしてみてわかったこと。それは、

  • DoSアタックとは言わないが、同一IPからの大量アクセスが発生
  • httpdプロセスが大量に生成
  • 非力なサーバでスワップが発生しまくり
  • 処理しきれずダウン

という典型的な非力サーバの事象でした。

で、httpd.confをよく見ると、ServerLimitやMaxClients がデフォルトで 256 と、非力なサーバでは処理しきれない値になっている・・。とりあえサーバの最大プロセス数を数個に削減。そんなにアクセスがあるサーバではないので問題ないと思う。

次に、同一IPからの連続アクセスは制限をかけました。

具体的には、mod_limitipconn というApacheモジュールを入れました。
これはその目的通り、同一IPからの接続を制限するためのモジュールです。epel のリポジトリに入っているので、リポジトリを設定している人であれば、インストールは

 # yum install mod_limitipconn

とするだけです。リポジトリ設定していない人は、この辺りから適当にRPMをダウンロードしてインストールしましょう。
あとは、httpd.conf に

 MaxConnPerIP 5

と追記して、apacheをリロードすれば、どういつIPからは5接続に制限できます。制限に達するとレスポンスコード503が返ります。

ちなみに、同じページに画像などが複数あると、この接続数に達して、画像が一部表示できないことがあります。なので、対象のディレクトリの設定で、

<Directory "/var/www/html">
   ~ 省略 ~
    NoIPLimit image/*
</Directory>

と記述してあげれば、画像はこの制限から除外することができます。

 

参考 : Apache で同一IPからの接続数を制限する mod_limitipconn 設定方法

MaxClients

 - IT技術, サーバ構築, ネットワーク , , ,

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
ネットワーク遅延のシミュレーション@CentOS 5

最近のLinux では、簡単にネットワーク遅延をシミュレーションできるようです。 …

no image
ハイフンで始まるファイルを消す@Linux

ハイフンで始まる以下のようなファイル(-hoge)を作ったとします。 # ech …

no image
Portable Ubuntu for Windows

Portable Ubuntu for Windowsなるものがあるらしいです。 …

no image
apt系コマンド

インストールの管理にDebian系ではaptを使いますが、すぐ忘れてしまうのでメ …

no image
Linuxの高速再起動 – kexec @Debian etch

カーネルバージョン2.6.13からサポートされている機能です。 ランレベル1に移 …

no image
USB3.0 メモリ (Super Talent Express DUO ST3U32EDB)

32GBのUSB3.0 のメモリが安かったので買ってみた。そろそろ東芝のUSB3 …

no image
chromeに独自のproxyを設定

Windows版のchromeのproxyの設定を開くと、システム(IE)のpr …

no image
radikoを出張先で聞く@Windows 7 or XP Professional 以上

普段は自宅が関東にあり、インターネットラジオradikoを聞いていたのですが、出 …

no image
SquirrelMailの添付ファイルサイズ変更@Debian Etch

SquirrelMailで送信できる添付フィルのサイズがデフォルトだと2Mのよう …

no image
screenを起動するとウィンドウの幅が変わる@RHEL6

Windows上からsshログインしたRHEL6でscreenを使うと、ウィンド …