trAlyzr 测试网站响应速度的工具包开源项目

我要开发同款
匿名用户2010年05月28日
45阅读
开发技术Python
所属分类管理和监控、DevOps/运维工具
授权协议GPLv3

作品详情

很多租用新服务器的站长关心的一个问题是,用户连接网站的速度怎样。这里的“速度”主要指两个方面,一个是服务器的响应时间或者叫网络延迟(responsetimeornetworklatency),另一个是服务器和用户之间的带宽(throughput)。响应时间指的是用户(或者服务器)向服务器(或用户)发送一段建立连接请求到最终接收到对方回馈之间的延迟时间;而连接带宽指的是当连接建立之后单位时间能传递的数据量。响应时间和带宽这两个量共同影响用户体验到的“网站连接速度”:如果用户点击网站链接后过较长时间才有响应,但一旦有响应后网站瞬时打开,这说明服务器响应时间较长但连接带宽较高;如果点击链接后很快响应但很久才完全载入页面,说明响应时间较小但带宽也较小。测量响应时间通常使用ping或者traceroute工具,比如下面这个ping的例子:$pingbaidu.comPINGbaidu.com(220.181.6.81)56(84)bytesofdata.64bytesfrom220.181.6.81:icmp_seq=1ttl=51time=284ms64bytesfrom220.181.6.81:icmp_seq=2ttl=51time=284ms64bytesfrom220.181.6.81:icmp_seq=3ttl=51time=283ms最后的283ms指的是从客户端发送64个字节到baidu然后再返回接收到的往返时间(round-triptime)是283毫秒。测量连接带宽通常需要直接下载某个较大(比如几十兆)的探针文件,然后测量平均下载的KB/s。但这种方法并不准确,因为单个网页的字节数往往较小(几十到上百K字节),有效传输速度(effectivetransferspeed,实际的传输字节数除以传输时间)往往大于大文件的平均传输速度,而顺时的爆发传输速度(burstspeed)更有可能是平均速度的数倍。而且服务器和用户(特别是用户)的网络总带宽会影响到连接带宽。通常,站长请求用户测试网站速度会包括两个步骤,一是请用户ping服务器,另一个就是请用户下载某个探针文件。在无法使用ping的情况,或者当延迟较高需要查找问题的时候,站长也会要求用户补充traceroute数据,以便根据连接经由路径的情况来分析高延迟产生的原因。连接带宽往往是不对称的(上传和下载速度不同),但网络延迟时间基本是对称的,也就是说用户ping服务器的时间应该和服务器ping用户的时间大致相等。利用这个对称性,我写了trAlyzr,一个用来自动统计网站和用户之间网络延迟时间的工具包。考虑到用户可能在某种防火墙之内不是总能ping的通,trAlyzr利用从服务器traceroute访客IP来测量网络延迟,当用户在防火墙或者关机的时候,测量到的实际上是服务器和最终的那个防火墙或者网关的延迟,但因为防火墙和网关和局域网内的用户机器延迟通常很小(几个ms或更小),这种方法测量到的几乎就是服务器和终端用户的连接延迟。我编写这个工具的目的主要是为了分析服务器在美国(或者其他国外地区)的VPS对中国IP的网络延迟,如果你需要测量国内或者美国的服务器对全球各地IP的网络延迟,你要对工具中的脚本做修改。这个工具利用QQ的纯真IP数据库来分析用户IP的地理位置。下载你可以在svn中下载这个软件:svncheckouthttps://tralyzr.googlecode.com/svn/trunk/tralyzr使用这是个Linux下的工具。因为需要traceroute,你通常需要root权限才能运行这个软件。脚本是python写的,所以你也需要python。解压后将getips.py中的f=open("%s/sample_ips.log"%curdir)一行修改为你的网站服务器的log位置。对log的格式没有特别要求,只要访问者的IP是在每行的最前面即可。如果你不修改getips.py文件,那么默认使用sample_ips.log然后./getips.py可从log文件中将所有中国的非搜索引擎的IP提出存放在ips.txt中。然后traceroute这些IP:./traceip.py运行时间取决于ips.txt中的IP数目和你的网络情况,traceroute1000个IP可能需要40分钟左右。traceroute的结果会放在data/目录下等待分析。然后用parseip.py脚本分析存放在data/下的结果(注意分析这些数据不需要root权限):./parseip.py分析的数据会保存在下面三个文本格式的文件中:  1.delays.dat:存放了用户的网络延迟时间分布,从100ms开始到600ms  2.prov_delay.dat:存放了各个省的用户连接服务器的平均延迟  3.prov_num.dat:存放了各个省的用户(IP)占总IP的百分比为了形象地展示这些数据,我写了三个gnuplot脚本绘制数据图。你可以通过gnuplot*.g来生产图表。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论