概要
Linux を使用している場合、Webサーバへの接続確認に curl コマンドを使用すること場面が多いと思います。
そんなときに、名前解決にかかる時間、サーバとの接続にかかる時間を確認する方法をご紹介します。
curlコマンドの使用例
普段、私個人としても curl コマンドでは以下のように使用することが多いです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
% curl -I https://www.google.co.jp/ HTTP/1.1 200 OK Date: Tue, 09 Jan 2018 15:07:39 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=Shift_JIS P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info." Server: gws X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN Set-Cookie: 1P_JAR=2018-01-09-15; expires=Thu, 08-Feb-2018 15:07:39 GMT; path=/; domain=.google.co.jp Set-Cookie: NID=121=ht8l20MrpMCPHL8tEx9lkUgdeV-P3Bd289rM6dRIZT3dZ2wiII0ePTIGPvKsIrhp1Jmx9ftlGUmdgXI9jX0KqrpJH9UnGzGYk1RVk5fkTBJ5eQdC79w3yk3dgbpqbpNo; expires=Wed, 11-Jul-2018 15:07:39 GMT; path=/; domain=.google.co.jp; HttpOnly Alt-Svc: hq=":443"; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337; quic=51303335,quic=":443"; ma=2592000; v="41,39,38,37,35" Transfer-Encoding: chunked Accept-Ranges: none Vary: Accept-Encoding |
上の例では、I オプションによりヘッダ情報だけ取得しています。
おおよそ何か問題があった場合はこれだけで十分だと思います。
しかしもう一歩進んで以下のようなコマンドを用意すると何かと問題切り分けに便利だったりします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
% curl -k -H 'Accept: application/json' -H 'Content-Type: application/x-www-form-urlencoded' https://www.google.co.jp/ -o /dev/null -w \ "\ %{url_effective}への接続を開始。 名前解決の実行...\n\ 名前解決の実行完了@%{time_namelookup}秒経過\n\ 対象サーバへの接続...\n\ 対象サーバへ接続完了@%{time_connect}秒経過\n\ 対象サーバへHTTPリクエスト送信...\n\ 対象サーバへHTTPリクエスト送信完了@%{time_pretransfer}秒経過\n\ 対象サーバ側でHTTPコンテンツ生成...\n\ 対象サーバ側でHTTPコンテンツ生成完了。HTTPコンテンツを受信開始@%{time_starttransfer}秒目\n\ HTTPコンテンツの受信中...\n\ HTTPコンテンツの受信完了。ここまでにかかった合計時間は%{time_total}秒でした。\n\ " \ 2> /dev/null **********************以下出力結果********************** https://www.google.co.jp/への接続を開始。 名前解決の実行... 名前解決の実行完了@0.004秒経過 対象サーバへの接続... 対象サーバへ接続完了@0.006秒経過 対象サーバへHTTPリクエスト送信... 対象サーバへHTTPリクエスト送信完了@0.149秒経過 対象サーバ側でHTTPコンテンツ生成... 対象サーバ側でHTTPコンテンツ生成完了。HTTPコンテンツを受信開始@0.211秒目 HTTPコンテンツの受信中... HTTPコンテンツの受信完了。ここまでにかかった合計時間は0.211秒でした。 |
kオプションはオレオレ証明書などSSL確認を行わないようにしています。不要であれば外してください。
上の例では、名前解決の時間、接続要求の時間、リクエストにかかる時間、初めのレスポンスまでにかかる時間、トータルの時間を取得しています。
何かと便利だと思うのでご参考にしていただければと思います。