人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: Ango
●カテゴリ:インターネット ウェブ制作
✍キーワード:HTTP アラーム クライアント リクエスト レスポンス
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● danielocean
●23ポイント

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


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

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

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

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

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


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

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

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

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

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

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

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


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

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

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


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

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

◎質問者からの返答

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

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


2 ● b-wind
●23ポイント

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

◎質問者からの返答

ありがとうございます

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


3 ● zebevogue
●22ポイント

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

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

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

◎質問者からの返答

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

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


4 ● danielocean
●22ポイント

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を仕掛けるという方法もありますが、

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

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

◎質問者からの返答

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ