《转载》脚本实现从客户端服务端HTTP请求快速分析
本文转载自https://www.imooc.com/article/14107
当客户告知我们,一个页面http://www.xxx.com 有问题时,作为PE,我们第一步是会是怎么作?
我的处理经验来看,我会第一时间打开我的额浏览器,输入http://www.xxx.com,去查看页面的返回以及服务端过来的响应状态。遇到的响应可能有以下几种情况:
情况一、如果页面出现“页面无法连接”
然后我执行,ping www.xxx.com 查看是否有IP解析正常,如果有预期的 ip返回,那么这个命令的另一个用处就是查看,服务端到我本地端,通过ICMP协议的延时,如果RT>300ms,或者有“
Request timeout”,那么我判断一定是我本地到远程服务器的网络出现了异常。
情况二、如果页面可以正常打开,但是出现了如:Bad gateway 或者 Connecttion timeout
那么我需要去对应分析,状态码提示的问题
情况三、如果页面能正常打开,但是数据加载十分慢
那么这个时候,我需要去分析网络延时,或者是否后端处理速度缓慢。
处理这种问题,其实在 linux下我们只需要用到ping和curl两个命令就可以了。
Jping的作用,就是:通过最简单且直观的方式,快速的提供请求url中过程中的相关数据(包括ICMP延时、DNS请求速度、tcp握手时间等),帮助我们快速的定位分析问题。
接下来,我就分享下Jping的实现:
#########################################################################
# File Name: Jping.sh
# Program function:
# Author:Jeson
# mail:jeson@imoocc.com
# Created Time: 二 10/25 12:12:42 2016
if [ $# == 1 ];then
if [[ "$1" =~ ^http.* ]];then
domain_name=$(echo $1|awk -F'/' '{print $3}')
ping -c 3 ${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 -c 3 ${domain_name}
fi
else
echo "Error:Input a url or domain_name or ip address!"
exit
fi
脚本注解:
通过ping命令,检察1、域名DNS的解析结果,及IMCP的RT时间
通过curl来获取每一个http请求的响应状态码,DNS解析时间、TCP握手时间等等
三、Jping执行方式
我只需要通过终端执行Jping + url地址 or Jping + IP或者域名地址
1、参数URL地址的方式
$ Jping http://www.imoocc.com
PING (115.238.23.253): 56 data bytes
64 bytes from 115.238.23.253: icmp_seq=0 ttl=40 time=37.347 ms
64 bytes from 115.238.23.253: icmp_seq=1 ttl=40 time=37.749 ms
64 bytes from 115.238.23.253: icmp_seq=2 ttl=40 time=37.788 ms
--- www.taobao.com.danuoyi.tbcache.com ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 37.347/37.628/37.788/0.199 ms
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 258 100 258 0 0 444 0 --:--:-- --:--:-- --:--:-- 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:myjob jeson$ Jping www.imoocc.com
PING (115.238.23.253): 56 data bytes
64 bytes from 115.238.23.253: icmp_seq=0 ttl=40 time=38.801 ms
64 bytes from 115.238.23.253: icmp_seq=1 ttl=40 time=37.789 ms
64 bytes from 115.238.23.253: icmp_seq=2 ttl=40 time=37.044 ms
--- www.taobao.com.danuoyi.tbcache.com ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 37.044/37.878/38.801/0.720 ms
《转载》脚本实现从客户端服务端HTTP请求快速分析的更多相关文章
- Query通过Ajax向PHP服务端发送请求并返回JSON数据
Query通过Ajax向PHP服务端发送请求并返回JSON数据 服务端PHP读取MYSQL数据,并转换成JSON数据,传递给前端Javascript,并操作JSON数据.本文将通过实例演示了jQuer ...
- MVC验证10-到底用哪种方式实现客户端服务端双重异步验证
原文:MVC验证10-到底用哪种方式实现客户端服务端双重异步验证 本篇将通过一个案例来体验使用MVC的Ajax.BeginForm或jQuery来实现异步提交,并在客户端和服务端双双获得验证.希望能梳 ...
- Oauth2.0客户端服务端示例
https://blog.csdn.net/qq_28165595/article/details/80459185 前言前面的理解OAuth2.0认证与客户端授权码模式详解,我们大致了解了Oauth ...
- Eureka源码探索(一)-客户端服务端的启动和负载均衡
1. Eureka源码探索(一)-客户端服务端的启动和负载均衡 1.1. 服务端 1.1.1. 找起始点 目前唯一知道的,就是启动Eureka服务需要添加注解@EnableEurekaServer,但 ...
- 『言善信』Fiddler工具 — 16、使用Fiddler抓取移动端App请求
目录 1.抓取Android移动端App请求 2.抓取IOS移动端App请求 3.总结: 1.抓取Android移动端App请求 前提: 因为Fiddler抓包的原理就是通过代理,所以确保被测终端要和 ...
- HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端
协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...
- Redis设计与实现-客户端服务端与事件
事件 redis服务器是事件驱动的,事件分为文件事件与时间事件 文件事件是服务器通过套接字与客户端连接,两者之间的通信会产生相应的文件事件,服务器监听并处理这些事件完成网络操作: 时间事件是指redi ...
- 软件测试_Loadrunner_性能测试_脚本录制_录制多server请求脚本
之前我们写过使用Loadrunner录制APP脚本的基本流程:软件测试_Loadrunner_APP测试_性能测试_脚本录制_基本操作流程,但是只能用于请求单一服务器端口适用 这次主要是写的多serv ...
- fastHttp服务端处理请求的过程
Github 地址 https://github.com/valyala/fasthttp fastHttp 服务端的处理请求的过程 工作过程 主要代码 设置监听地址 server.go func ( ...
随机推荐
- 第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图
第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图 1.基本概念 2.反爬虫的目的 3.爬虫和反爬的对抗过程以及策略 scra ...
- Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索核心API详解、基本查询详解、QueryParser详解)
一.搜索流程详解 1. 先看一下Lucene的架构图 由图可知搜索的过程如下: 用户输入搜索的关键字.对关键字进行分词.根据分词结果去索引库里面找到对应的文章id.根据文章id找到对应的文章 2. L ...
- Mybatis表关联一对多
有了前面几章的基础,对一些简单的应用是可以处理的,但在实际项目中,经常是关联表的查询,比如:最常见到的多对一,一对多等.这些查询是如何处理的呢,这一讲就讲这个问题.前面几篇教程中介绍的都是单表映射的一 ...
- Cisco配置VLAN+DHCP中继代理+NAT转发上网
实验环境: 路由器 使得TP-link 设置NAT转发使用,tp-link路由器网关设置成 192.168.30.254 (核心层)Cisco 3550三层交换机(型号C3550-I5Q3L2-M)配 ...
- Intellij修改模板代码
比如class的注释之类的,直接地址为 其中Include才是真正的内容
- Xcode : svn 无法上传静态库(.a)文件
1.打开终端,输入cd,空格,然后将需要上传的.a文件所在的文件夹(不是.a文件)拖拽到终端(此办法无需输入繁琐的路径,快捷方便) ,回车:2.之后再输入如下命令:svn add xxx.a,回车:3 ...
- <转>Win8.1+CentOS7 双系统 U盘安装
0.准备工作 1.宏碁 Aspire 4752G 笔记本 2.Win8.1 企业版操作系统 3.8G 以上 U 盘 4.UltraISO(当然也可以选择其他的U盘制作工具,看个人喜好) 5.下载 Ce ...
- Web4个实验题目DOM+JS
实验目的: 1. 掌握DOM对象的基本语法 2. 掌握getElementById函数 3. 掌握getElementsByTagName函数 来源http://www.cnblogs.com/xia ...
- XCODE 添加不同IOS版本的模拟器
一.XCode->Preferences->Downloads, 可以下载模拟器.
- gridview根据条件来改变行的颜色以及改变单元格的颜色。
gridview根据条件来改变行的颜色以及改变单元格的颜色. 通过在RowDataBound事件中写代码来实现,见代码. protected void GridView1_RowDataBound(o ...