脚本错误代码0 script 压测100%的返回是什么原因导致的?(图)

今天在做压测的时侯,遇到一个很奇怪的现象,当并发线程小于200的时侯,错误率就急剧上升脚本错误代码0 script,最大的时侯,错误率100%脚本错误代码0 script,这个是哪些鬼?因为我是在NON-GUI的模式下运行,看不到任何错误的信息,然而,我在运行脚本的时侯,有带日志的输出-“-j/Users/xiao/Downloads/Jmeter_File/testreport.log”,我当时的第一个反应就是去看日志,上面都是说断定错误,期望的返回和实际的返回不符,引起Error率骤降,好的,那就我把断定功能去除,瞧瞧是否有改善?

重新运行脚本,错误率还是上一次一样,没有太大的改善,再看日志文件,还是说期望返回0,然而,实际返回的不是0;说明此次是没有通过Jmeter自己的插口断定规则,那也就是说插口的返回是4**或则5**的HTTPCODE,那这个是啥诱因引起的?我一时没有了方向,由于在运行5个并发的时侯,这个脚本都正常,返回正确。那如今只有一个办法了,到GUI的模式下运行脚本,瞧瞧实际的错误,把并发线程降低到200,脚本回放,找到了报错信息了,如右图:

图片[1]-脚本错误代码0 script 压测100%的返回是什么原因导致的?(图)-唐朝资源网

有报错信息,那就好办了,上google和度娘,瞧瞧啥情况?缘由是:压测顾客端的端口被用完了,压测的恳求发送不出去了,其实也未能收到服务端的响应,没有可用端口地址了。因为压测的是MacOS,那就查查看目前的端口信息:

sysctlnet.inet.ip.portrange

返回:

net.inet.ip.portrange.lowfirst:1023

net.inet.ip.portrange.lowlast:600

net.inet.ip.portrange.first:49152

net.inet.ip.portrange.last:65535

net.inet.ip.portrange.hifirst:49152

net.inet.ip.portrange.hilast:65535

因为系统才给我们不到2W个端口,一旦发送的恳求小于1.5W,错误率就大幅上升。看见,上面600-1023是system用的端标语,49152-65535是user用的端标语,据说不多,因为压测的并发线程200,但是duration设置为10分钟,造成好多线程在使用端口通讯的时侯,并没有来得及释放,前面的线程就又来了,有好多处于TIME_WAIT的恳求,通过命令查看netstat-na|grepTIME_WAIT,所以,须要释放更多的端口。

解决:

1.sudotouch/private/etc/sysctl.conf

2.sudovim/private/etc/sysctl.conf

3.添加下边2行

net.inet.ip.portrange.first=32768

net.inet.ip.portrange.last=65535

4.:wq,退出VIM

5.重启系统,让配置生效

重新运行脚本,在NON-GUI的模式下运行脚本,比GUI模式下运行,因为须要资源更少,压测顾客端的性能会更好;问题也顺利解决,前面瞧瞧重新压测得到的TPS和ERROR%指标

图片[2]-脚本错误代码0 script 压测100%的返回是什么原因导致的?(图)-唐朝资源网

服务器配置2C4G,CenterOS,这个问题耗费2.5个小时,完美解决。

© 版权声明
THE END
喜欢就支持一下吧
点赞48 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片