httpのレスポンス遅延を監視する方法はどんなものがあるでしょうか。

クライアントからのHTTPリクエストに対するレスポンスが一定時間以内に返らない場合にアラームを上げる方法を探しています。一回でも遅延したら検知してたいので、定期的に検査用のリクエストを投げて応答時間を測定する物は不可です。

回答の条件
  • 1人2回まで
  • 登録:2007/01/09 09:53:04
  • 終了:2007/01/16 09:55:03

回答(4件)

id:danielocean No.1

danielocean回答回数76ベストアンサー獲得回数52007/01/09 11:16:30

ポイント23pt

非常に難しいと思います。


ユーザーにリクエストが返る仕組みは、大雑把に書くと

1.ユーザーがリクエストを投げる

2.サーバが演算を行い、処理をする

3.返答をサーバから送出する

4.ユーザーにリクエストが返る


という構成になっています。

3から4に至る場合は、ユーザーからサーバまでの間を

全て疑わなければなりません。

基幹回線、中継地点、ラストワンマイル、

ユーザー環境、ルーター、PC、ブラウザ・・・。

インターネットサービスであれば、会員が100万人いれば

そのクライアントの種類は100万通りです。


クライアントが全て同一の仕様で、かつサービス側がコントロールできるのであれば可能ですが。

例:RSSリーダーを自社開発して、自社でユーザーに配布。

  リーダーで反応が鈍かったらメールでサービス側へ通知。


複雑なWebシステムであれば対策も取れますが、

クライアントの要求仕様が分からなければ難しいと思いますがいかがでしょうか。

id:Ango

すみません、書き方が悪かったですが、厳密にクライアントで受け取ってることまで保証しなくても良いです。上記であれば3までの時間でかまいません。

サーバがレスポンスを時間内に返していないことを検知したいので、たとえばパケットをキャプチャ・監視するようなものをネットワーク内に設置することを想定しています

2007/01/09 11:33:01
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402007/01/09 12:07:44

ポイント23pt

Apache であれば CustomLog で %T を設定すればリクエストを扱うのにかかった時間が取得できます。

http://httpd.apache.org/docs/2.2/ja/mod/mod_log_config.html


あとはログを swatch 等の監視ツールでチェックすればよいと思います。

http://www.atmarkit.co.jp/flinux/rensai/root04/root04b.html

id:Ango

ありがとうございます

でも、今回使用しているHTTPサーバはapacheではないのです

2007/01/09 16:21:53
id:zebevogue No.3

zebevogue回答回数65ベストアンサー獲得回数72007/01/09 14:08:52

ポイント22pt

試してないのでアイデアだけです。

  1. サーバ側でHTMLを出力する時にミリ秒を書き込みます。
  2. クライアントはHTML内にonloadイベントで受け取ったミリ秒をスクリプトでサーバ側に投げます。
  3. サーバ側でスクリプトが受け取り、その差を計算します。
  4. 一定時間以上ならアラームを出す。

1往復してるので厳密ではないのですが・・。

id:Ango

回答ありがとうございます。

実は、今回考えているのはHTMLではなくWebサービスの応答なのです。

2007/01/10 00:40:29
id:danielocean No.4

danielocean回答回数76ベストアンサー獲得回数52007/01/09 15:18:47

ポイント22pt

HTTPレスポンス監視だと3つほど候補があります。


1.監視ツールを使う

NAGIOS、JMETERなどでレスポンス監視。

NAGIOSはHTTPのHEADの返りを見たりするパターンがあります。

JMETERはパフォーマンス測定ツールで著名ですが、

シナリオを書き換えてHTTPレスポンス計測にするという方法があります。

シナリオとは、実際にトップページを開いてここをクリックして・・・という実際の動作ですね。

これをオートパイロットの形にして定点観測。


2.外部ASPを使う

今すぐ思いつかない(すみません眠くて)ですが、

外部からHTTPのパフォーマンス監視をするものです。

1のASP化と思って頂いても良いでしょう。


3.自分で書く

PERLやSHELLで

「HTTPを投げて、返り値を見て期限を過ぎていればアラートメール」

というスクリプトを書いてcronで仕掛ける。

もちろん仕掛けるcronは対象とは別のサーバが望ましい。


自分は1と3、特に3は重視しています。

</html>までに3秒かかったらアラートメール、といった

シナリオを自分で考えて手作りしてます。

人によっては自分で再起動させてしまうスクリプトを作ったりするそうです。


他にもデスクトップにPACKDISPを仕掛けるという方法もありますが、

手作りの方が都合が良かったりします。

ただ、いずれも誤検知が多かったりするのでかなり調整をしながら運用しないといけません。

id:Ango

回答ありがとうございます。

クライアントからのリクエストすべてについて、一度でも目標レスポンス時間を超過したらアラームとしたいのです。

よって、外部からリクエストを投げて測定するのではなく、すべてのリクエスト・レスポンスを監視する必要があります。

2007/01/10 00:46:36
  • id:danielocean
    RTMETRICSて製品が近いかもな。これは解析ツールなんだけど。
    http://www.auriq.co.jp/rt/rtmetrics.html
    パケットキャプチャかぁ・・・JMETERじゃダメかしらむ。
    これ自分で書いた方が早い気もしてきた。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません