*

httpingが不親切でちょっとハマった

投稿日:2014/12/03 最終更新日:2014/12/03

httping というHTTPサーバのレイテンシやスループットを計測するツールがある。
サーバに接続するまでの時間とサーバが中でごにょごにょして送り返すまでの時間を区別して表示してくれるので、何となく重かったりする時などにどこに問題があるか判りやすい。

そして、その httping を使って対象のHTTPサーバの応答時間(接続に掛かる時間+データを返す時間)を Munin でグラフ化する為のプラグインがある。

【Munin】ウェブサーバのレスポンスを調べるhttpingプラグイン書きました

Munin については前も少し書いた。
Debian wheezy で Muninを設定をする + 403エラーの解決方法

 

本来だと外部のサーバから定点観測しないと Connect time が正常に取れないので問題だが、今回は WordPress がどれだけ時間食ってるかをグラフ化したかったので、そのままサーバマシンにインストールした。

httping や今回使わせて貰ったプラグインはさっき書いたリンク先を見てくれた方が早そうだし内容が被るので今回は書かない。

インストール関連は無事に終えて問題なくプラグインも動作した。
ただ1つ問題が発生した。

 

静的ページと動的ページで connect time が全然違う

まずテストとして4つのウェブサイトからデータをとることにした。
テスト先は以下の通り。

1.trip.kobanza.me(他所サーバ WordPress)
2.独自ドメインA(自宅サーバ 軽量htmlのみの静的ページ)
3.サブドメインA(自宅サーバ 独自ドメインAのサブドメインでWordPress)
4.独自ドメインB(自宅サーバ WordPress)

 

設定などに関しては全く問題なく、数分待っていたらグラフに最初の結果が出力された。

1 のこのサイトのサーバに関しては、connect time は想定どおりの数値なものの、動的にページ生成しているためか processing time がかなり高かった。

やはりというべきか、改善点はCMS側をいかに高速化するかという点に尽きる事が判った。

 

2 のサイトはhtmlのみの、それも凄いサイズの小さいページだった。
connect time は 314.88m などと出てまあ早い。

processing time に関しても、412.94m とずいぶん早く、これはまあ妥当な結果に。

 

ただ問題は3と4で、processing time は1のサイトとほぼ変わりなく想定どおりであったものの、connect time が 13.73 となっており、これは明らかに、圧倒的に遅い。

「接続」と言って浮かんでくるイメージからして、2と同じサーバにありながら静的ページと動的ページで connect time が違うのは明らかにおかしい。

そして、1,3,4のグラフには、connect time が同タイミングで 950 を超えている事が1度あった。

httping かプラグインに何かしらの問題があると確信した。
そして結論から言うと、確信なんてアテにならない。どっちも正常だった。

 

混乱と検証

・自宅サーバ内の静的ページと動的ページで connect time が違う。
・WordPress を使っている1,3,4のページのみで同時に connect time が遅い時があった。

上記2つの問題を解決する為に色々試した。
本当にあれこれ試したけど、解決に役立ったのは以下の2点。

 

外部のサーバである trip.kobanza.me(動的ページ) と kobanza.me(静的ページ) に対してコマンド単体でテストしてみた所、やはり全体には大きな差が生まれたが、connect time に関しては差が見られなかった。

外部のサーバから 2と4をhttpingで測定してもらったところ、 connect time に差は生まれなかった。

 

外部への測定や、外部から測定してもらって差が生まれなかったと言うことは、静的ページと動的ページで何故か connect time に差があるという土台がそもそも勘違いだった事になる。

・自宅サーバ内の静的ページと動的ページで connect time が違う。
・WordPress を使っている1,3,4のページのみで同時に connect time が遅い時があった。

上記の2点では差が静的ページか動的ページかだけにしか見えなかったが、それ以外の原因で connect time に差が出ていることが間違いないと判った。

この話をリアルタイムでしていた友人が httping 側のソースを覗いてみてくれた所、事態は解決へと至った。

 

httping はちょっと不親切

httping の計測のステップと応答時間の切り分けはこうらしい。

getaddrinfo() ← ホスト名解決 DNSサーバへパケットなげて帰ってくるまでブロック
socket() ← まだパケットは飛ばない。よって無視してよい
setsockopt() ← ここもプロセス内部でソケットのオプション指定してるだけ
bind() ← ここでもまだパケット飛ばない
connect() ← ここで飛ぶ。TCPのハンドシェイクが確立するまでブロック。
select() ← 取得したハンドルを設定するだけ

これらのシステムコールを上から順に実行していって最初と最後のタイムスタンプの差がconnect timeになってる

全ての謎は httping の connect time にはホスト名解決(getaddrinfo) も含まれていることにあった。

httping に -r オプションをつけると名前解決を最初の1回しかしないので、-r オプションを付けて再テストしたところ、1の外部サーバと2の自宅サーバのメインドメインに関しては正常に返ってきたものの、3のサブドメインと4の別ドメインに関しては2回目以降は返ってこなかった。

 

反省

/etc/hosts を編集してアッサリ解決。

結局、とりあえず突っ込んだだけのドメインがちゃんと名前解決できるようになってなかったのが問題を生んだ原因だった。

さらにその上でローカルで動かしたことが原因の勘違いを生む要因だった。

 

多分こんな人他に居ないだろうけど、httping の connect time にはホスト名解決(getaddrinfo) も含まれているんです!

あれあれ?と思っても、簡単に本体やプラグインを疑っちゃいけないね。

でもこの仕様はイメージと違うよ。
せめてオプション説明とかに書いといてほしかったと、解決してくれた人と話したりした。

 

最近気に入った良いモノ

  • このエントリーをはてなブックマークに追加
  • Pocket
  • 1 follow us in feedly

関連記事

no image

MuninでApacheのデータが取得できないとき

LWP::UserAgent not found at /etc/mu...

記事を読む

no image

Debian wheezy で Muninを設定をする + 403エラーの解決方法

サーバトラフィックを画像出力するために Munin をインストールした...

記事を読む

no image

Debian wheezyでのMTU設定

MTUの基準値はデフォルトで1500になっている。 現在の環境ではM...

記事を読む

新着記事

no image

【WordPress】WP Super Cacheで設定時に500エラーが出るときの対処法

WordPressのページキャッシュ用にWP Super Cacheと...

記事を読む

【Debian】mysqlのスロークエリログを取得する手順

VPSにWordPressをインストールしていると、キャッシュプラグイ...

記事を読む

no image

MIFES10でUWSCの予約語・キーワードを明示する

最近エディタにはMIFES10を利用しているが、UWSCの利用頻度が上...

記事を読む

no image

WordPressでメニューが文字化けする

WordPressでメニューを編集した際、保存を押すと文字化けが起きた...

記事を読む

no image

WEBサイトキャプチャーツール「CrenaHtml2jpg」が便利

WEBサイトのキャプチャを作成したい事は多々ある。 これまでは He...

記事を読む

コメント/トラックバック (1件)

トラックバック用URL:

この投稿のコメント・トラックバックRSS

  1. […] meとは具体的に何なんだろう?ということで調べてみると・・・ httpingが不親切でちょっとハマった – 妄想コバンザメ なるほど。/etc/hosts に直接書いたのは2重の意味でよかったのか […]




管理人にのみ公開されます

no image
【WordPress】WP Super Cacheで設定時に500エラーが出るときの対処法

WordPressのページキャッシュ用にWP Super Cacheと...

【Debian】mysqlのスロークエリログを取得する手順

VPSにWordPressをインストールしていると、キャッシュプラグイ...

no image
MIFES10でUWSCの予約語・キーワードを明示する

最近エディタにはMIFES10を利用しているが、UWSCの利用頻度が上...

no image
WordPressでメニューが文字化けする

WordPressでメニューを編集した際、保存を押すと文字化けが起きた...

no image
WEBサイトキャプチャーツール「CrenaHtml2jpg」が便利

WEBサイトのキャプチャを作成したい事は多々ある。 これまでは He...

→もっと見る

PAGE TOP ↑