ab)测试报错: apr_socket_recv: Connection timed out (110)

  根据自己的使用经验是:

    ab压测的目标是在自身服务器上时(即测试地址是127.0.0.1),模拟超过3000人的并发没有问题,在非自身服务器时模拟人数不超过8000人且,并发数和链接数的比例是1:10时也没有太大问题。



网上流传方法一:

使用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 文件(大概在1369行),重新编译安装。


         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;    //添加

             }

         }

参考文章:http://swordinhand.iteye.com/blog/1133107

你可能感兴趣的:(并发,ab,压力测试)