apacheのアクセスログ
こんばんは、牧野です。
今回はアルゴリズムの話は置いておき、apacheの話題です。
先日、あるサイトのapacheのアクセスログを調べていて気付いたのですが、
リクエストがタイムアウトしてしまい、クライアントがデータを受信できなかった時でも
アクセスログにはリクエストのあった時間のログが残ってしまうんですね。。
ス テータスコード200で。。。
これは、携帯でアクセスできるウェブサーバがあれば簡単に確認することができます。
(携帯の方がタイムアウトするまでの時間が短いので)
次のようなプログラムをサーバに置いて、
<?php
sleep(70);
echo 'Hello!';
?>
あとはアクセスログを見ながらこのプログラムに携帯からアクセスするだけです。
すると、、、
通信開始
↓
70秒経過前 に端末側ではタイムアウトメッセージ
↓
70秒後に、ステータスコードが200で、リクエストが合った時刻のログが書き込まれる
実際にどんなデータがやりとりされているかを見るには、Linuxなら
tcpdump
コマンドが使えます。
/usr/sbin/tcpdump -n 'port 80'
という感じで実行すると80番ポート流れるパケットの概要を見ることができます。
今回はポートだけを指定していますが、もっといろんなマッチング条件を指定することも可能です。
これを実行して改めてアクセスしてみると、
19:25:25.289060 210.136.161.151.44924