- PR -

サーバが混み合っている時のページ

1
投稿者投稿内容
ぬるぴょん
ベテラン
会議室デビュー日: 2003/06/02
投稿数: 62
投稿日時: 2007-02-19 14:15
会議室の皆さん、いつもお世話になっております。

webアプリを構築する際、疑問に思っているのですが
アプリサーバがアクセス集中などで非常に負荷がかかっている時に
「ただ今混み合っております。しばらく経ってからアクセスしてください」
と表示させるためにはどのような処理を行なえばよいのでしょうか。

上限セッション数などをあらかじめ決めておいて
それに達するとメッセージページを表示するという形でしょうか・・・
この場合、上限セッション数を見積もるのはなかなか難しく
運用を始めてから調整することになってしまいます。

環境はASP.NET+VB.NET2005でwebサーバとアプリサーバは
一台で兼任している場合になります。

どなたかよろしくお願いします。
Tasuku
大ベテラン
会議室デビュー日: 2006/09/14
投稿数: 106
お住まい・勤務地: tokyo
投稿日時: 2007-02-19 16:41
引用:

アプリサーバがアクセス集中などで非常に負荷がかかっている時に


まず、最初に、サーバに負荷がかかっている状態を測定する指標が何なのかを
明らかにする必要があります。
CPU使用率なのか、ロードアベレージなのか、セッション数なのか。
それはアプリケーション毎の特性によりますので、一概にはなんとも言えません。
また、それにより対策する箇所は異なります。

引用:

「ただ今混み合っております。しばらく経ってからアクセスしてください」
と表示させるためにはどのような処理を行なえばよいのでしょうか。


セッション数の問題であれば、ApacheやIISなどのWebサーバへ、
セッション数を制限する設定をすれば、そのような処理は実現可能です。
CPU使用率、ロードアベレージの問題であれば、アプリケーション自体が
それらのパフォーマンス値を取得して、動的に応答を制御する様に
作り込まなければなりません。

引用:

上限セッション数などをあらかじめ決めておいて
それに達するとメッセージページを表示するという形でしょうか・・・
この場合、上限セッション数を見積もるのはなかなか難しく
運用を始めてから調整することになってしまいます。


難しいからやらない。ということでしょうか。
そもそも難しくもなんともなく、運用前に負荷テストをすればよいだけの話です。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-02-19 16:43
問題は、何をもって”混み合っている”と判断するかですよね。

単純にリクエストのタイムアウト程度であれば、web.configで executionTimeout を調整して customErrors でエラーページにリダイレクトでいいんでしょうけど。

場合によっては、sqlのCommandTimeoutを拾ったり、パフォーマンスカウンタを参照したりするケースがあるのかもしれませんね。あとは、machine.configの requestQueueLimit を調整したりするケースもあるのかなぁ。

すみません、全然答えになってない・・・
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2007-02-19 16:47
というか基本的方向性として。
運用を考慮するなら

最低でも
ロードバランサ+Webサーバ×2
って構成にするべきでしょうね。

#尤も予算に左右されますけど。
_________________
Inspired Ambitious
ISMS Assistant Auditor
1

スキルアップ/キャリアアップ(JOB@IT)