- CONTENTS -

2005年12月07日の日記です


同時接続数規制  2005-12-07 15:37:31  COMP
このページを公開しているWEBサーバーに、同時接続数の規制プログラムを入れました。

といっても、普通に使っている人にはほとんど問題の無い話。
ここで記すのは「普通じゃない」使い方をしている人に対するお詫びです。

---

2週間ほど前のことになりますが、WEBサーバーが外部からほとんど接続できなくなったことがありました。
調査したところ、通常では考えられないほどの接続がありました。

WEBサーバーのプログラムは、1つのプログラムで1つの接続にしか対処できません。
そのため、多数の接続が在る場合には自動的に「自分自身のプログラムを増やす」ことで対処します。

問題の出た時は、多数の接続を処理しようとしてプログラムを多数起動したところ、メモリが足りなくなってハードディスク上でSWAPを起こし、全体の速度が低下するために余計に接続を処理できなくなり新しいプログラムが起動…という悪循環を起こしていました。

この設定は私のミスでした。現在では、同時に起動できるサーバー数が適切に制限されており、メモリが足りなくなるほどプログラムが動くことはなくなっています。

---

しかし、昨日また同様の問題が起こりました。
今度は、一人の方がサイト内の全内容を取得しようとして、同時に30程度の接続を行っていました。
これによって、起動可能な全サーバープログラムが一人の人に占有されてしまい、ほかの方がほとんど接続不能な状態になりました。

一人の不適切な利用者のために他の方が迷惑をこうむるのはよくない状況です。
なによりも、公開サーバーは私の仕事でも使用しているため、私の仕事にも支障をきたす可能性がありました。

そこで、一時的に「その方だけ」接続を拒否する設定をさせていただきました。


通常の使用方法では、一人の方が30もの接続を同時に行うことは無いはずです。
Windows の IE の場合、通常の設定では同時接続数は2つに制限されています。
(設定を変えるソフトによって同時接続数を増やすことは可能です)


そこで、サーバーにプログラムを追加して、同時接続数の制限を行いました。
制限にかかった場合、接続はエラーとなります。

WEBブラウザの同時接続数を極端に上げている方の場合、今回の制限によって一部の画像が表示されないなどの弊害が出るかもしれません。
その場合は、お手数ですが同時接続数の設定を見直してみてください。


制限値は、通常の使用では問題のない程度の数に設定していますが、将来変更するかもしれません。

2005.12.9 追記

IE の同時接続数が2である、というのはRFC2068に書かれていることが根拠になっていました。

この RFC 文書の 8.1.4 章の最後の部分に、こう書かれています。

A single-user client SHOULD maintain AT MOST 2 connections with any server or proxy.
(シングルユーザーのクライアントは、サーバーまたはプロクシに対し、最大で2接続を維持すべきである)


…これは、HTTP 1.1 に対しての話で、HTTP 1.0 は適用外ではあります。
私のサーバーは HTTP 1.1 に対応していますが、クライアントが HTTP 1.1 を知っているとは限りませんから、最大接続数を制限する時にこの数字を根拠にするのはあまりよくないかもしれません。

しかし、いまだに HTTP 1.0 を使用しているクライアントは「時代遅れ」であるとも言えます。
または、悪いことをするために最大接続数を2以上にしたいから、わざと時代遅れのプロトコルを使っているか。
申し訳ないのですが、時代遅れのクライアントに対して考慮できるだけの「資源」を私は持ち合わせていません。悪い人に対してはなおさらです。


IE の同時接続数は、簡単に2以上に増やせます。
しかし、これをやったときには「RFC 違反」となりますので、うまく WEB が閲覧できなかったとしても自己責任ということになるでしょう。


名前 内容


戻る

トップページへ
Google


Web 当サイト内