• Pylot——跨平台的网站压力测试工具


    这两天因为报名了一个实习生,考虑到面试时候可能问到网站并发,就准备自己做一下压力测试。

    因为我是新手,所以在找工具这个阶段就用了比较长时间。最后发现Pylot对于新手来说是一个不错的选择,简单易用好配置,考虑到Pylot没有中文版,官方的介绍也是英文,所以我准备把过程写下来,方便同样是新手的人。

    0、Pylot介绍:

      一个简单易用,跨平台的开源网站压力测试工具,可以从命令行运行也可以开启图形界面运行,可以设置cookie,可以将测试结果制作成图表方便查看。

    1、为什么要用Pylot

      就两点:简单易用,跨平台。

      我用Pylot之前也搜了很多,因为我用的是OS X,所以大部分Windows专属的工具就pass掉了。我也去Stackoverflow搜过,发现大家强烈推荐的是JMeter,什么是JMeter呢,百度百科说“是Apache组织开发的基于Java的压力测试工具”。于是我就兴冲冲地点开官方文档准备学习,然后发现。。。光文档就不是一两天能看完的。。。我只是想简单粗糙地测一下我的网站能承受住多少并发而已!

      于是呢,再往下翻,就看到Pylot了。

    2、Pylot配置

      好了,我知道你已经迫不及待地打开Pylot的官网了,那我也就不废话了,咱们直接进入主题,从实际应用中看看Pylot到底是怎么个简单法。

      如果不考虑网速问题,Pylot的配置大概要5分钟吧(什么?5分钟你都嫌多?你知道我用6k/s的速度爬完所有依赖包的痛苦吗!)。

      Pylot依赖wxPython、NumPy和Matplotlib三个包,并且需要Python环境,所以我们一共需要下载5个东西。

      第一步:下载Pylot自身

      大家点击这个Pylot下载按钮按钮就会跳转到下载页面,然后点最上面那个pylot_1.26.zip就可以下载了。

      这里插一句题外话吧,大家可以看到,Pylot的最新版本就是07/06/2009,确实很旧。。。这也是我一开始不想用它的原因,感觉有点不爽。不过实际使用中发现可以满足我的需求,再加上真的很简单(你学习JMeter的时间就够我测N个网站了)所以推荐给和我有一样需求的朋友。

      第二步:下载及配置Python:

      Python:Pylot需要python2.5以上的版本,打开以后选择对应你的系统的版本,下载好之后双击安装。

      第三步:下载三个依赖包

      推荐使用

     easy_install wxpython numpy matplotlib

      或者

     pip install wxpython numpy matplotlib

       这两种方式来进行安装,简单快捷上档次!

    如果你是第一次使用Python的话,强烈建议安装easy_install和pip,他们相当于Linux下的apt-get或者yum,非常好用。具体安装教程我就不写了,大家需要的可以百度一下。

      如果你不愿意使用这两种方式安装,也可以分别下载三个安装包进行安装。

      wxPython :打开以后选择对应你的系统以及python版本的安装包进行下载,下载完双击安装。

      NumPy:打开以后点击numpy下载按钮按钮进行下载,下载完参照INSTALL.txt文件进行安装。

      Matplotlib:打开以后点击matplotlib下载按钮按钮进行下载,下载完参照INSTALL文件进行安装。

      

      安装好上述文件之后,我们就可以开始使用Pylot了。你没看错,Pylot本身不需要安装。

    3、Pylot使用

      我们先从一个实例入手,然后详细讲一下Pylot的各种参数。

      首先需要配置一下testcases.xml这个文件。这个文件包含了需要测试的目标url以及具体的测试内容。

      大家打开testcases.xml之后可以看到两个<case>......</case>,因为我们只是要一个简单的实例,所以我们把第二个<case>....</case>删掉,然后把第一个<case>....</case>里面的<url></url>改成你需要测试的url。我的就是<url>http://www.langman1dian.com</url>。改好之后整个文章内容是这样的

    <testcases>
        <!-- SAMPLE TEST CASE -->
        <case>
            <url>http://www.langman1dian.com</url>
        </case>
        -->
    </testcases>

      好了,保存关闭。

      然后我们就可以开始测试了。

      什么?你说太快了?没错,就是这么快!

      在命令行输入

    python pylot -a 50

      然后回车,你就可以看到测试开始了。

      这里的 -a 参数就是设置用户数,也就是你想要模拟同时访问的人数。

    4、参数详细说明

      Pylot有很多参数,我详细介绍一下:

      

    -a, --agents=NUM_AGENTS
    设置同时访问用户数量
    -d, --duration=DURATION
    设置总测试时间(秒)
    -r, --rampup=RAMPUP
    设置提升量(秒),我也没太搞懂这个是什么意思
    -i, --interval=INTERVAL 
    设置访问间隔(毫秒)
    -x, --xmlfile=TEST_CASE_XML
    设置要使用的xml文件,默认testcase.xml
    -o, --output_dir=PATH
    设置输出文件路径
    -n, --name=TESTNAME
    设置测试名称
    -l, --log_msgs
    设置是否需要日志信息
    -b, --blocking  
    设置是否开启锁定模式,如果开启会锁定输出直到测试结束
    -g, --gui  
    设置是否使用图形界面
    -p, --port=PORT
    设置xml-rpc监听的端口

      常用的就是 -a -d -i -g,其他的不太常用,有几个我也搞不太清楚是什么意思。。。大家如果有知道的可以告诉我一下。

      大家也看到了,使用-g选项的话就可以开启图形界面,图形界面我就不详细介绍了,虽然有几个英文单词吧,但是大家应该一眼就能看明白怎么用了,还是挺方便的。

      如果你不想每次都手动设置参数,可以修改core文件夹里的config.py文件,这个文件是Pylot默认加载的配置。

      好了,基本的介绍就到这里吧,对我来说知道这些已经足够用了,大家如果想看更深入的,比如设置cookie以及远程启动测试脚本等等进阶部分的话可以查看:Pylot官方教程

    5、查看测试结果

      Pylot可以将测试结果转化成表格以及图的方式展示出来,测试完成后会在results文件夹中生成以当前日期命名的文件夹,打开之后可以看到一个html文件,这个就是测试结果了。

      我们来看一个Pylot官方提供的例子吧:测试结果

      pylot测试结果

      这是第一部分。

      最上面分别是结果的生成时间、测试的开始时间和测试的结束时间。

      Workingload Model里分别是测试总时间、用户数以及提升(不太懂什么意思)和间隔时间。

      Results Summary里是测试结果统计,可以看到总请求数(requests)、总错误数(errors)和总接受数据量(data received)。

      最下面是访问时间统计以及流量统计。

      avg是平均访问时间,stdev是标准差,min是最小值,max是最大值。50th %表示 排在50%位置(也就是中间位置)的访问时间,其他以此类推。

      第二部分

      这是第二部分。

      第一张图表示的是测试时间与响应时间的关系,可以看到随着测试时间增大,响应时间也在增大。

      第二张图表示的是测试时间和每秒请求数量的关系,可以看到随着测试时间增大,每秒请求数也在增大。

      第三部分我就不截图了,就是具体的每个用户的信息。

    6、总结

      好了,Pylot的基本介绍就到这里了,第一次写技术文章,如果有不合适的地方欢迎大家提建议。自己技术有限,如果有什么错误或者遗漏的地方也欢迎大家指正!

      谢谢。

  • 相关阅读:
    Linux环境下入侵工具Knark的分析及防范 java程序员
    六个步骤即可防范ARP地址欺骗类病毒 java程序员
    巧用命令行 揪出ARP欺骗病毒母机方法 java程序员
    poj3264Balanced Lineup(线段树RMQ)
    有了1A的把握再去提交
    poj2828Buy Tickets(线段树 单点更新+区间求和+区间第K值)
    poj2513Colored Sticks(无向图判欧拉路、回路+trie树)
    ACM数学(转)
    sdut2381Broken Keyboard
    sdut2383Decode the Strings(循环节)
  • 原文地址:https://www.cnblogs.com/numbbbbb/p/3029959.html
Copyright © 2020-2023  润新知