首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Linux学习12-ab报错apr_pollset_poll

Linux学习12-ab报错apr_pollset_poll

作者头像
上海-悠悠
发布于 2019-05-06 15:12:09
发布于 2019-05-06 15:12:09
4K0
举报

前言

使用ab压力测试时候出现报错apr_pollset_poll: The timeout specified has expired (70007),本篇总结了几个ab常见的报错和对应解决办法 当并发数过大的时候,也会出现apr_socket_recv: Connection reset by peer (104)

apr_pollset_poll

如果出现apr_pollset_poll: The timeout specified has expired (70007),主要是timeout连接超时了,可以加个-k参数,让连接KeepAlive

ab -c 10 -n 5000 http://47.104.x.x:8082/

代码语言:javascript
复制
[root@yoyo sbin]# ab -c 10 -n 5000 http://47.104.x.x:8082/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 47.104.190.48 (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
apr_pollset_poll: The timeout specified has expired (70007)

出现原因主要是timeout连接超时了,可以加个-k参数,让连接keep-alive,另外还有-r 和-s参数也可以加上

代码语言:javascript
复制
-r              Don't exit on socket receive errors.                 # 在遇到socket接收错误后,不退出测试
-s timeout      Seconds to max. wait for each response    # 最大超时时间,默认30s
                   Default is 30 seconds
-k              Use HTTP KeepAlive feature                          # keep-alive保持连接

加上-k参数重新运行就不会有问题了

ab -c 10 -n 5000 -k http://47.104.x.x:81/

其它异常

当并发数设置为1000时,直接报错:apr_socket_recv: Connection reset by peer (104)

代码语言:javascript
复制
[root@yoyo sbin]# ab -c 1000 -n 10000 http://47.104.x.x:81/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 47.104.x.x (be patient)
apr_socket_recv: Connection reset by peer (104)
Total of 1 requests completed

当ab遇到严重的网络错误后,就会退出测试,因为这种错误说明网络存在其他问题,但是只要服务器返回数据,哪怕是数据不对,ab也会继续下去,但是会记录数据长度不对。 但事实上是:在高压力下,偶尔的一两个请求被阻止,这是一个正常的情况,特别是有防火墙或入侵检测系统的情况下,这种事情会经常发生。 那么ab有没有参数来跳过这种错误,使测试继续下去呢?

-r参数可以实现忽略这种错误,在遇到socket接收错误后,不退出测试

ab -c 10 -n 5000 -r http://47.104.x.x:81/

加上-r参数就不会遇到这种异常,中途退出了

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 前言
  • apr_pollset_poll
  • 其它异常
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档