您的位置:首页 > 理论基础 > 计算机网络

脚本实现从客户端服务端HTTP请求快速分析

2017-12-17 18:44 267 查看
本文转载自https://www.imooc.com/article/14107

首先我想介绍下,分享这个脚本的用处:
当客户告知我们,一个页面http://www.xxx.com有问题时,作为PE,我们第一步是会是怎么作?

我的处理经验来看,我会第一时间打开我的额浏览器,输入http://www.xxx.com,去查看页面的返回以及服务端过来的响应状态。遇到的响应可能有以下几种情况:

情况一、如果页面出现“页面无法连接”

然后我执行,pingwww.xxx.com查看是否有IP解析正常,如果有预期的ip返回,那么这个命令的另一个用处就是查看,服务端到我本地端,通过ICMP协议的延时,如果RT>300ms,或者有“

Requesttimeout”,那么我判断一定是我本地到远程服务器的网络出现了异常。

情况二、如果页面可以正常打开,但是出现了如:Badgateway或者Connecttiontimeout

那么我需要去对应分析,状态码提示的问题

情况三、如果页面能正常打开,但是数据加载十分慢

那么这个时候,我需要去分析网络延时,或者是否后端处理速度缓慢。

处理这种问题,其实在linux下我们只需要用到ping和curl两个命令就可以了。

Jping的作用,就是:通过最简单且直观的方式,快速的提供请求url中过程中的相关数据(包括ICMP延时、DNS请求速度、tcp握手时间等),帮助我们快速的定位分析问题。

接下来,我就分享下Jping的实现:

#########################################################################

#FileName:Jping.sh

#Programfunction:

#Author:Jeson

#mail:jeson@imoocc.com

#CreatedTime:二10/2512:12:422016

if[$#==1];then

if[["$1"=~^http.*]];then

domain_name=$(echo$1|awk-F'/''{print$3}')

ping-c3${domain_name}

if[$?==0];then

response_res=($(curl-o/dev/null-w%{http_code}''%{time_namelookup}''%{time_connect}''%{time_pretransfer}''%{time_starttransfer}''%{time_total}''%{size_download}''%{speed_download}${domain_name}))

echo"状态码:"${response_res[0]}

echo"DNS解析时间:"${response_res[1]}"(s)"

echo"TCP握手:$(echo"${response_res[2]}-${response_res[1]}"|bc)(s)"

echo"发送第一个Get请求时间:"${response_res[3]}"(s)"

echo"接收到Server的第一个包时间:"${response_res[4]}"(s)"

echo"从开始到server关闭连接的时间:"${response_res[5]}"(s)"

echo"HTTP请求内容大小:"${response_res[6]}"(B)"

echo"HTTP包请求的速度:"${response_res[7]}"(B/s)"

fi

else

domain_name=$1

ping-c3${domain_name}

fi

else

echo"Error:Inputaurlordomain_nameoripaddress!"

exit

fi



脚本注解:

通过ping命令,检察1、域名DNS的解析结果,及IMCP的RT时间

通过curl来获取每一个http请求的响应状态码,DNS解析时间、TCP握手时间等等

三、Jping执行方式

我只需要通过终端执行Jping+url地址orJping+IP或者域名地址

1、参数URL地址的方式

$Jpinghttp://www.imoocc.com

PING(115.238.23.253):56databytes

64bytesfrom115.238.23.253:icmp_seq=0ttl=40time=37.347ms

64bytesfrom115.238.23.253:icmp_seq=1ttl=40time=37.749ms

64bytesfrom115.238.23.253:icmp_seq=2ttl=40time=37.788ms

---www.taobao.com.danuoyi.tbcache.compingstatistics---

3packetstransmitted,3packetsreceived,0.0%packetloss

round-tripmin/avg/max/stddev=37.347/37.628/37.788/0.199ms

%Total%Received%XferdAverageSpeedTimeTimeTimeCurrent

DloadUploadTotalSpentLeftSpeed

100258100258004440--:--:----:--:----:--:--444

状态码:302

DNS解析时间:0.523(s)

TCP握手:.029(s)

发送第一个Get请求时间:0.552(s)

接收到Server的第一个包时间:0.581(s)

从开始到server关闭连接的时间:0.581(s)

HTTP请求内容大小:258(B)

HTTP包请求的速度:444.000(B/s)

2、参数IP域名的方式

JesondeMacBook-Air:myjobjeson$Jpingwww.imoocc.com

PING(115.238.23.253):56databytes

64bytesfrom115.238.23.253:icmp_seq=0ttl=40time=38.801ms

64bytesfrom115.238.23.253:icmp_seq=1ttl=40time=37.789ms

64bytesfrom115.238.23.253:icmp_seq=2ttl=40time=37.044ms

---www.taobao.com.danuoyi.tbcache.compingstatistics---

3packetstransmitted,3packetsreceived,0.0%packetloss

round-tripmin/avg/max/stddev=37.044/37.878/38.801/0.720ms
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: