ab压力测试报错(apr_socket_recv: Connection reset by peer (104)) 问题

本文介绍ab命令作为Apache自带的压力测试工具的应用。不仅适用于Apache服务器,还可以用于nginx、Tomcat等多种服务器的压力测试。文章通过实例展示了如何使用ab命令进行LVS服务调度的压力测试,并解决了在高并发测试中遇到的连接被重置的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 ab命令压力测试

        网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环。只有让服务器处在高压情况下,才能真正体现出软件、硬件等各种设置不当所暴露出的问题。

        性能测试工具目前最常见的有以下几种:ab、http_load、webbench、siege。今天我们专门来介绍ab。

         ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。

         下面是我在做lvs实验使用ab命令测试后端服务调度压力情况:

         客户端使用ab命令请求lvs服务器端的VIP,当使用-c命令指定请求数大与一定数量后,就会有一下报错信息。

解决办法:

第一步:修改默认最大连接数ulimit值

[root@lvs~]# ulimit -n

1024                    #默认1024

修改方法 

[root@lvs~]# ulimit -n   20480

 第二步:修改内核参数

查看应用服务器和数据库均未报错,连接被重置,bingyi了以下,apr_socket_recv这个是操作系统内核的一个参数,在高并发的情况下,内核会认为系统受到了SYN flood攻击,会发送cookies(possible SYN flooding on port 80. Sending cookies),这样会减慢影响请求的速度,所以在应用服务武器上设置下这个参数为0禁用系统保护就可以进行大并发测试了:

# vim /etc/sysctl.conf 

net.ipv4.tcp_syncookies = 0

# sysctl -p

然后就可以超过10000个并发测试了。

另附其他系统内核参数说明:

net.ipv4.tcp_syncookies = 0  

#此参数是为了防止洪水攻击的,但对于大并发系统,要禁用此设置

net.ipv4.tcp_max_syn_backlog

#参数决定了SYN_RECV状态队列的数量,一般默认值为512或者1024,即超过这个数量,系统将不再接受新的TCP连接请求,一定程度上可以防止系统资源耗尽。可根据情况增加该值以接受更多的连接请求。

net.ipv4.tcp_tw_recycle

#参数决定是否加速TIME_WAIT的sockets的回收,默认为0。

net.ipv4.tcp_tw_reuse

#参数决定是否可将TIME_WAIT状态的sockets用于新的TCP连接,默认为0。

net.ipv4.tcp_max_tw_buckets

#参数决定TIME_WAIT状态的sockets总数量,可根据连接数和系统资源需要进行设置。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值