とあるクライアントで、ランディングページ(以下LP)にアクセスが集中してしまい、サイトが表示されない現象が発生してしまいました。 詳しく見ていみると、LPに使われている画像が重たいせいで、トラフィックが天井に張り付いてしまって通信できていない状態みたい。 LPに帯域が集中して、本家のECサイトが引っ張られて表示、購入できない状態を回避しようとおもい、色々調べてみたところApace の mod_bw というモジュールを使って帯域制限をかけれるみたいです。 参考にさせてもらったのはこちらhttp://cent2.sblo.jp/article/64885019.html yum --enablerepo=epel -y install mod_bwyumで簡単インストールします。 で、設定。今回のサーバーの回線は 専用10Mbpsだったので、8Mbpsぐらいで制限がかかるように設定します。忘れてたんですが8Mbpsってメガビット/秒 なので、MBに直すと 1MB/s ですね。 まず、httpd.conf の設定見直し。あらためてググって調べたところMaxClients を超える接続が合った場合は ListenBacklog の値まで待ちキューに入るらしい。簡単に503エラーは出したくないので、考えて以下の様な設定にしました。vim /etc/httpd/conf/httpd.conf<IfModule prefork.c>StartServers 20MinSpareServers 20MaxSpareServers 20ServerLimit 512ListenBacklog 512MaxClients 10MaxRequestsPerChild 40000</IfModule> 同時接続数10、 512接続までは待ち状態になるはず。512接続を超えるアクセスは503エラーになります。 次に mod_bw.conf の設定vim /etc/httpd/conf.d/mod_bw.confLoadModule bw_module modules/mod_bw.so<Directory "/var/www/vhosts/hogehoge.jp/html/lp/"> BandWidthModule On ForceBandWidthModule On BandWidth all 1000000 MaxConnection all 100</Directory>/lp/ 以下に制限をかけます。 BandWidth all 1000000 で最大約1000kbyte/s に設定。 1000kbyte/s = 1MB/s = 8Mbpsに収まる設定です。 また同時に MaxConnection all 100 を設定して、100までは待ちキューに入るはず。。 /lp/ 以下は、100以上のアクセスがあると503エラーとして返すはずです。 httpd.conf の ListenBacklog より少なくしたのは、本家にできるだけ影響がないように。 最後にキャッシュ。出来るだけ画像にアクセスを減らすためキャッシュ設定を追加します。httpd.conf に mod_cache が読み込まれていれば、/lp/.htaccess に以下を追加ExpiresActive OnExpiresByType image/gif "access plus 30 minutes"ExpiresByType image/jpeg "access plus 30 minutes"ExpiresByType image/png "access plus 30 minutes"ExpiresByType application/x-shockwave-flash "access plus 30 minutes"ExpiresByType application/rss+xml "access plus 30 minutes"ExpiresByType application/x-javascript "access plus 30 minutes"ExpiresByType text/html "modification plus 30 minutes"ExpiresByType text/css "access plus 30 minutes"30 分はキャッシュ。 コレで様子見たいと思います。 あ、根本的解決としては Amazon CloudFront とかに画像を移すことですね。