美文网首页性能测试Amazing Arch软件测试
JMeter并发测试遇到Socket closed错误解决方案

JMeter并发测试遇到Socket closed错误解决方案

作者: 天天向上卡索 | 来源:发表于2019-01-18 11:09 被阅读4次

    JMeter并发测试遇到Socket closed错误解决方案

    Intro

    最近在用 JMeter 测试服务的性能,并发测试的时候,当线程数超过500,就会出现 socket closed 的错误,在网上查阅了一番资料之后,找到了下面的解决方案:

    1. 第一步,调整默认文件数
    2. 第二步调整HttpClient的Idletimeout

    Solution

    调整文件数

    怎么在Windows上配置,找了几种方式都不行,最后在 git bash 里执行了linux 下的命令,也可以查看和修改

    查看默认限制数配置:

    $ ulimit -a
    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    file size               (blocks, -f) unlimited
    max locked memory       (kbytes, -l) unlimited
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 256
    pipe size            (512 bytes, -p) 1
    stack size              (kbytes, -s) 8192
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 1418
    virtual memory          (kbytes, -v) unlimited
    

    可以看到我的电脑上默认的文件数是 256,下面我们来修改默认文件数

    ulimit -n 2048
    

    -n 后面的参数就是要指定的大小,可以根据自己的电脑的配置进行调整,配置好的可以改的更大一些

    如果上面执行完没有报错,然后在执行 ulimit -a 查看配置就会发现文件数已经修改为了指定值,如果有报错可能就是数值设置的太大了,可以调整一下,需要是 2 的指数(如256,512,1024,2048,4096...)

    open files limit config

    调整HttpClient的idletimeout配置

    问题原因:在JMeter下,发送http 请求时,一般都是默认选择了use keepAlive,JMeter坑就在这里,默认勾选了这个(如果不勾选的话,也不会保存),但其配置JMeter.properties中的时间设置默认却是注销的,也是是说,不会等待,一旦连接空闲,则立马断开了,导致我们压测中出现了事务失败的情形。

    解决办法:修改 jmeter.properties 中的 httpclient4.idletimeout=<time in ms> 设置成自己觉得合理的时间,一般可设置成10-60s(表示连接空闲10s后才会断开),注意这边单位是ms。

    Reference

    相关文章

      网友评论

        本文标题:JMeter并发测试遇到Socket closed错误解决方案

        本文链接:https://www.haomeiwen.com/subject/gjngdqtx.html