- - PR -
サーバが混み合っている時のページ
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-02-19 14:15
会議室の皆さん、いつもお世話になっております。
webアプリを構築する際、疑問に思っているのですが アプリサーバがアクセス集中などで非常に負荷がかかっている時に 「ただ今混み合っております。しばらく経ってからアクセスしてください」 と表示させるためにはどのような処理を行なえばよいのでしょうか。 上限セッション数などをあらかじめ決めておいて それに達するとメッセージページを表示するという形でしょうか・・・ この場合、上限セッション数を見積もるのはなかなか難しく 運用を始めてから調整することになってしまいます。 環境はASP.NET+VB.NET2005でwebサーバとアプリサーバは 一台で兼任している場合になります。 どなたかよろしくお願いします。 | ||||||||||||
|
投稿日時: 2007-02-19 16:41
まず、最初に、サーバに負荷がかかっている状態を測定する指標が何なのかを 明らかにする必要があります。 CPU使用率なのか、ロードアベレージなのか、セッション数なのか。 それはアプリケーション毎の特性によりますので、一概にはなんとも言えません。 また、それにより対策する箇所は異なります。
セッション数の問題であれば、ApacheやIISなどのWebサーバへ、 セッション数を制限する設定をすれば、そのような処理は実現可能です。 CPU使用率、ロードアベレージの問題であれば、アプリケーション自体が それらのパフォーマンス値を取得して、動的に応答を制御する様に 作り込まなければなりません。
難しいからやらない。ということでしょうか。 そもそも難しくもなんともなく、運用前に負荷テストをすればよいだけの話です。 | ||||||||||||
|
投稿日時: 2007-02-19 16:43
問題は、何をもって”混み合っている”と判断するかですよね。
単純にリクエストのタイムアウト程度であれば、web.configで executionTimeout を調整して customErrors でエラーページにリダイレクトでいいんでしょうけど。 場合によっては、sqlのCommandTimeoutを拾ったり、パフォーマンスカウンタを参照したりするケースがあるのかもしれませんね。あとは、machine.configの requestQueueLimit を調整したりするケースもあるのかなぁ。 すみません、全然答えになってない・・・ | ||||||||||||
|
投稿日時: 2007-02-19 16:47
というか基本的方向性として。
運用を考慮するなら 最低でも ロードバランサ+Webサーバ×2 って構成にするべきでしょうね。 #尤も予算に左右されますけど。 _________________ Inspired Ambitious ISMS Assistant Auditor |
1