AB工具

安装

最快安装:

yum install httpd-tools

源码安装:

yum install apr-util
yum -y install yum-utils
yumdownloader httpd-tools
rpm2cpio httpd-*.rpm | cpio -idmv

window安装:
  • 进入http://httpd.apache.org/download.cgi
  • 选择Files for Microsoft Windows
  • 进去之后再选择ApacheHaus,第二个也是独立的Apache下载地址,另外三个是集成开发环境
  • 在新页面会 发现VC9和VC11字样,VC9是指用VS2008编译的代码,而VC11是用VS2012编译的,而用VS2012编译的无法在windows xp和server 2003中使用。这里选择VC9编译的64位Apache
  • 本人下载 解压 重命名 至 F:\Apache24
  • 修改配置:F:\Apache24\conf\httpd.conf,
    Define SRVROOT “F:/Apache24”
    Listen 80
  • 到 C:\Windows\System32 找到cmd.exe 使用管理员身份运行
  • 打开CMD窗口,输入:”F:\Apache24\bin\httpd.exe” -k install -n apache
    切记,包含引号。该命令的意思是,安装apache服务,并将该服务名称命名为apache(你也可以改成别的),回车。

    正常安装完毕如下图所示:

    其中,Errors reported here must be corrected before the service can be started.意思是,若该句话后面有错误信息,则表示服务安装失败,需要先改正错误。若没有,则成功。

  • 在安装目录中,找到F:\Apache24\bin\ApacheMonitor.exe可执行文件,双击运行,桌面右下角会出现图标。

  • 点击图标会出现窗口,点击左侧start,启动apache服务。

异常

使用ab或者webbench做压力测试,如果并发数开到1000的时候,无法完成测试。到晚上查看资料发现是linux网络参数设置。

方法一:

longhao@longhao etc]# vi /etc/sysctl.conf
在kernel2.6之前的添加项:
net.ipv4.netfilter.ip_conntrack_max = 655360
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180
kernel2.6之后的添加项:
net.nf_conntrack_max = 655360 # net.nf_conntrack_max = 655360 也可以
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
[longhao@longhao etc]# sysctl -p /etc/sysctl.conf
如果报错:error: “net.nf_conntrack_max” is an unknown key 则需要使用modprobe载入ip_conntrack模块,lsmod查看模块已载入。
[longhao@longhao etc]# modprobe ip_conntrack

方法二:

按如下修改 Apache 源码目录下 support/ab.c 文件,重新编译安装。

elseif(status != APR_SUCCESS) {
    err_recv++;
    if(recverrok) {
        bad++;
        close_connection(c);
        if(verbosity >= 1) {
            charbuf[120];
            fprintf(stderr,"%s: %s (%d)\n", "apr_socket_recv", apr_strerror(status, buf, sizeofbuf), status);
       }
        return;
   } else{
        bad++;                                 //添加
        close_connection(c);                   //添加
        //apr_err("apr_socket_recv", status);  //注释
       return;    //添加
    }
}

简单使用

模拟100个并发用户,对一个页面发送1000个请求

1
2
./ab -n1000 -c100 http://github.com/
#其中-n代表请求数,-c代表并发数

性能指标

  • 吞吐率(Requests per second)
    吞吐率和并发用户数相关
    不同的并发用户数下,吞吐率一般是不同的
  • 并发连接数(The number of concurrent connections)
  • 并发用户数(Concurrency Level)
  • 用户平均请求等待时间(Time per request)
  • 服务器平均请求等待时间(Time per request:across all concurrent requests)
罐头很懒 (⊙v⊙)<br><br>工作日日常 :<br>do {<br>&nbsp;&nbsp;打代码<br>} while ( 发呆 || 吃饭 )<br><br>周末日常 :<br>( 鱼罐头 || 午餐肉 || 炸鸡块 ) +<br>( 罐可乐 || 瓶啤酒 ) +<br>( 盒仔饭 || 艇仔粥 || 即食面 ) +<br>( 轻音乐 || 肥皂剧 || 热网综 ) +<br>( 水果糖 || 甜布丁 )