zoukankan      html  css  js  c++  java
  • Linux学习14-ab报错apr_pollset_poll: The timeout specified has expired (70007)

    前言

    使用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/

    [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参数也可以加上

    -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)

    [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.190.48 (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参数就不会遇到这种异常,中途退出了

    交流QQ群:779429633

  • 相关阅读:
    opencv 在工业中的应用:模板匹配
    opencv 在工业中的应用:圆孔定位
    视觉基础与开发思路-第十节其他功能简介及总结
    视觉基础与开发思路-第九节形态学操作
    视觉基础与开发思路--第八节图像分割之轮廓进一步处理
    视觉基础与开发思路-第七节图像分割之点线圆边缘
    视觉基础与开发思路--第六节区域特征提取
    视觉基础与开发思路--第五节阈值分割
    vmware key
    编程常用命名大全
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/10255100.html
Copyright © 2011-2022 走看看