分享

PTS-AB-Jmeter-LoadRnner压测工具对比测试

 quasiceo 2018-04-29
                            PTS-AB-Jmeter-LoadRnner压测工具对比测试

一.        被测系统环境
内网访问:

外网访问:
备注:ECS服务器外网带宽受限制,ECS前端加入SLB则带宽无限制。

URL1:
外网地址:http:// SLBIP:9090/examples/servlets/servlet/HelloWorldExample
内网地址:http://内网:9090/examples/servlets/servlet/HelloWorldExample

URL1Servlet代码:
public class HelloWorldExample extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws IOException, ServletException
    {
        try {
         Thread.currentThread().sleep(100);

        } catch (InterruptedException e) { }

        ResourceBundle rb =
            ResourceBundle.getBundle("LocalStrings",request.getLocale());
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        out.println("<html>");
        out.println("<head>");

        String title = rb.getString("helloworld.title");

        out.println("<title>" + title + "</title>");
        out.println("</head>");
        out.println("<body bgcolor=\"white\">");

        // note that all links are created to be relative. this
        // ensures that we can move the web application that this
        // servlet belongs to to a different place in the url
        // tree and not have any harmful side effects.

        // XXX
        // making these absolute till we work out the
        // addition of a PathInfo issue

        out.println("<a href=\"../helloworld.html\">");
        out.println("<img src=\"../images/code.gif\" height=24 " +
                    "width=24 align=right border=0 alt=\"view code\"></a>");
        out.println("<a href=\"../index.html\">");
        out.println("<img src=\"../images/return.gif\" height=24 " +
                    "width=24 align=right border=0 alt=\"return\"></a>");
        out.println("<h1>" + title + "</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

URL2
外网地址:http:// SLBIP:9090/
内网地址:http://内网:9090/
URL2响应页面内容:

二.         压测工具安装环境
PTS压测引擎TrunnerJmeter AgentABLoadRunner-LoadGenerator均安装在阿里上同一台linux服务器:

1.操作系统:Linux 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
2.JDK     java version "1.7.0_75"
OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-1~trusty1)
OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)
备注:TrunnerJmeter Agent 压测引擎基于java实现
3.硬件配置 4Core*2594Mhz+4G MEN
    

三.        各压测工具对比测试过程及结果
(1)       首先使用各个压测工具开发脚本,脚本配置均采用默认。
(2)       URL1-http:// SLBIP:9090/examples/servlets/servlet/HelloWorldExample压测结果如下:


(3)       URL1-http://内网:9090/examples/servlets/servlet/HelloWorldExample压测结果如下:


(4)       基于目前外网测试结果可以看出各个压测工具的测试结果差别很小,接下来进行内网测试。
(5)       URL2-http:// SLBIP:9090/examples/servlets/servlet/HelloWorldExample5并发用户-外网测试结果如下:

(6)       URL2-http://内网:9090/5并发用户内网测试结果如下:


(7)       对URL2进行测试过程中发现外网各压测工具的测试结果相差都不大,反而进行内网测试的时候相差巨大,后排查原因发现是
因为JmeterABLoadRunner的脚本没启用HTTP connection KeepAlive属性,而PTS的脚本默认开启,所以URL2内网测试结果相差巨大。
而外网测试结果之所以结果相差不大,主要是ECS使用了前端SLB接入HTTP请求导致PTS 默认开启的HTTP长连接失效,所以URL2外网测试
结果相差不大。


截图备注:后使用LoadRunner脚本开启HTTP长连接进行URL2内网测试监控可以看出每秒新建连接数和每秒处理事物数成11正比,说明使用了SLB长连接失效。
(8)       通过设置Jmeter脚本HTTP协议implementation属性从默认更改为HTTPClient4.0LoadRunner去掉模拟新用户选项后对
Jmeter/loadrunner/PTS进行对比测试:内网 URL1- http://内网:9090/examples/servlets/servlet/HelloWorldExample,修改servlet
代码去掉Thread.currentThread().sleep(100),测试结果如下:

通过测试结果可以看出在相同的并发用户数下各压测工具HTTP协议压测性能相差较小。
四.测试结论1.       从TPS(每秒处理事务数)角度看,各压测工具测试结果基本相差不大,模拟HTTP协议压测性能基本一致。 2.       从响应时间角度看,各压测工具测试结果基本相差不大,模拟HTTP协议压测性能基本一致。 3.       前端使用负载均衡SLB情况下,HTTP协议Connection KeepAlive失效,导致HTTP请求响应连接使用短连接。 4.       基于现测试环境,在响应时间较小的情况下(通常20ms以下),HTTP使用长连接和使用短连接对测试结果TPS/响应时间影响较大。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多