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

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

  関連記事

Ubuntu 14.04 LTS DesktopのWindowsキーのショートカットを無効にする

Ubuntu 14.04 使っていて、Windowsキー+1 や Windows …

no image
dnsmasqでDNSサーバを立ててWindowsから参照させる

Linuxサーバ上にdnsmasqで DNSサーバ立てて、自宅内のサーバの名前解 …

no image
findでのファイル名or検索 and検索

findは色々な条件を指定してファイルを検索できます。or検索する場合は -or …

no image
viで特定文字列を改行に置換

viでは改行へ置換する場合 Ctrl+v Enterを使用して改行を指定します。 …

no image
アイソレーションレベル

データベースはあまり詳しくないので、メモ書き。 SQL-92の仕様では、アイソレ …

no image
PS3 Media Server で自動起動できない@Windows 7 64bit

PS3 Media Player へ、DLNA環境をWindows Media …

no image
qcow2のディスクイメージをマウントして編集する@Ubuntu12.04

KVMなどで使われているqcow2形式のディスクイメージは、単純なディスクイメー …

no image
Javaアプリの日本語文字化け対策

Linux上のSunのJVMで、GUIアプリを動かすと文字化けしてしまいます。 …

no image
vimでシンタックスハイライトの関連づけ拡張子を追加する@CentOS 5.3

vimで.shの拡張子を開くと、シェルの構文がハイライトされるし、.c を開けば …

no image
CPU を Ivy Bridge に変更したら early exception 0d rip error が出た@Fedora 15

CPUを古いAMDのAthlonから、IntelのIvy Bridge (i5) …