zoukankan      html  css  js  c++  java
  • webbench概述

    一、简介

    Webbench是知名的网站压力测试工具,能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。
    webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数和每秒钟传输数据量。
    Webbench最多可以模拟3万个并发连接去测试网站的负载能力

    二、安装webbench-1.5.tar.gz

    1、将webbench-1.5.tar.gz文件上传至服务器的/opt/目录下;

    2、对webbench-1.5.tar.gz文件进行解压操作:

    [root@besttest opt]# tar -xvf webbench-1.5.tar.gz
    webbench-1.5/
    webbench-1.5/webbench.1
    webbench-1.5/socket.c
    webbench-1.5/webbench.c
    webbench-1.5/Makefile
    webbench-1.5/debian/
    webbench-1.5/debian/rules
    webbench-1.5/debian/dirs
    webbench-1.5/debian/copyright
    webbench-1.5/debian/control
    webbench-1.5/debian/changelog
    webbench-1.5/COPYRIGHT
    webbench-1.5/ChangeLog

    3、进入webbench-1.5目录进行编译操作:

    [root@besttest opt]# cd webbench-1.5

    [root@besttest webbench-1.5]# make &&make install
    -bash: make: command not found

    安装make编译器:

    [root@besttest webbench-1.5]# yum  -y install make

    再次进行编译操作:

    [root@besttest webbench-1.5]# make && make install
    cc -Wall -ggdb -W -O -c -o webbench.o webbench.c
    make: cc:命令未找到

    提示cc命令未找到,安装gcc编译器:

    [root@besttest ~]# yum -y install gcc automake autoconf libtool make

    再次进行make编译:

    [root@besttest webbench-1.5]# make && make install
    cc -Wall -ggdb -W -O -c -o webbench.o webbench.c
    webbench.c: 在函数‘alarm_handler’中:
    webbench.c:77: 警告:未使用的参数‘signal’
    cc -Wall -ggdb -W -O -o webbench webbench.o
    ctags *.c
    /bin/sh: ctags: command not found
    make: [tags] 错误 127 (忽略)
    install -s webbench /usr/local/bin
    install -m 644 webbench.1 /usr/local/man/man1
    install: 无法创建普通文件"/usr/local/man/man1": 没有那个文件或目录

    编译成功:

    [root@besttest webbench-1.5]# ll webbench
    -rwxr-xr-x. 1 root root 24442 5月 10 18:55 webbench

    webbench的使用说明:

    [root@besttest webbench-1.5]# ./webbench
    webbench [option]... URL
    -f|--force Don't wait for reply from server.
    -r|--reload Send reload request - Pragma: no-cache.
    -t|--time <sec> Run benchmark for <sec> seconds. Default 30.
    -p|--proxy <server:port> Use proxy server for request.
    -c|--clients <n> Run <n> HTTP clients at once. Default one.
    -9|--http09 Use HTTP/0.9 style requests.
    -1|--http10 Use HTTP/1.0 protocol.
    -2|--http11 Use HTTP/1.1 protocol.
    --get Use GET request method.
    --head Use HEAD request method.
    --options Use OPTIONS request method.
    --trace Use TRACE request method.
    -?|-h|--help This information.
    -V|--version Display program version.

    三、使用

    [root@besttest webbench-1.5]# ./webbench -t 30 -c 10 http://sports.163.com/
    Webbench - Simple Web Benchmark 1.5
    Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

    Benchmarking: GET http://sports.163.com/
    10 clients, running 30 sec.

    Speed=54 pages/min, 423497 bytes/sec.
    Requests: 27 susceed, 0 failed.

    由执行结果可以算出tps的值:tps=Requests27/30sec
    但是不知道任务是对还是错,在日志中查看


    [root@besttest webbench-1.5]# ./webbench -t 1 -c 1 http://192.168.20.128/bugfree/index.php/site/login/
    Webbench - Simple Web Benchmark 1.5
    Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

    Benchmarking: GET http://192.168.20.128/bugfree/index.php/site/login/
    1 client, running 1 sec.

    Speed=1979 pages/min, 143286 bytes/sec.
    Requests: 33 susceed, 0 failed.

    [root@besttest logs]# cat access_log |grep "/bugfree/index.php/site/login/ HTTP/1.0" | wc -l
    34

    为什么100个并发的时候比10个并发所发的请求数要少,因服务器的处理能力有限,服务器处理不过来,cpu切片。

    四、测试结果分析

    1、测试环境(软件、硬件、数据库数据、脚本、测试场景等)
    判断2xx状态,不接收服务器的返回值


    2、同时lr测试,环境都一样,数据不一样(2.1,2.3秒)
    每一次的执行结果会不一样(why?差异在可接受范围内)
    出现差异怎么办:多次测试取平均值


    3、lr测试:2.9s  开发:日志打印1.8s
    1)排除开发打的计时是否正确(请求数lr使用录制html方式录制,一个html请求可能对应多个url请求等)
    2)client → webservice(代码、web容器) → db

    ①客户端发送请求时间
    ②请求传输时间
    ③服务器空闲线程取请求
    ④服务器代码执行时间
    ⑤请求传输到数据库时间
    ⑥数据库线程池拿到请求的时间
    ⑦数据库语法检查、语义分析、open表、生成执行计划、按照执行计划到内存或者磁盘中拿数据到内存中再返回、DML处理时间
    ⑧数据库处理结果返回到服务器时间
    ⑨服务器线程唤醒的时间
    ⑩服务器执行代码的时间
    ①①服务器执行结果返回客户端的时间
    ①②客户端接收数据的时间

    开发的响应时间:比方说,在代码的调用sql前开始计时,执行完相关方法后停止计时,并且打印时间,从第④步开始计时到代码块执行完毕的时间,第⑩步的执行时间

    响应时间相差大,慢在哪里?
    分析:
    步骤① ② ③ ①① ①②会慢,client端口是否有问题、网络是否有问题、线程池是否有性能问题(拿不到线程)

    如欢如殇 授以青春鲜活肢体奔忙 如思如忘 驱以老朽深沉灵魂冥想 始自情热激荡 从未敢终于世事炎凉 无能执手相望 无法去尝试结发同床 无力至心死身僵 一息坚强 ------ 我一直没有放弃,如果你也能看到 修身 修禅
  • 相关阅读:
    作业十三
    作业十二
    第十一次作业
    编译原理第十次作业
    P3388 【模板】割点(割顶) 题解 (Tarjan)
    BuaacodingT141 microhhh的回城 题解(模拟)
    P2055 [ZJOI2009]假期的宿舍 题解(二分图)
    P2764 最小路径覆盖问题 题解(二分图)
    2019.2-2019.3 TO-DO LIST
    P3369 【模板】普通平衡树 题解(Splay/FHQ)
  • 原文地址:https://www.cnblogs.com/lz2lhy/p/6834910.html
Copyright © 2011-2022 走看看