Jmeter-dubbo请求测试,报错:Long connection establishment failed, please chick server or restart Jmeter !
近期为了解决生产jmeter拨测误报的问题,也是急坏了我等测试菜鸟了,特此记录下来~
我们测试dubbo请求是通过Jmeter java请求模拟测试,当然要自己开发jar包了,这里不便公示。
测试dubbo请求,有很多依赖的jar包,比如这一坨:
dubbo-x.x.x.jar
javassist-x.x.x-GA.jar
zookeeper-x.x.x.jar
zkclient-x.x.jar
netty-x.x.x-Final.jar
还有,JMeter的不同版本。
我们为了测试dubbo,现在用的还是Jmeter 2.11版本,是不是很低级啊~~!!!不过测试dubbo请求,而且带泛型参数也是可以测试的哦(其实就是变相的invoke)。。。
为了确保生产服务正常运转,组织有一套名做“拨测系统”,就是按照一定的时间间隔执行Jmeter脚本,然后将response结果获取到,如果断言失败有异常的话就会发出告警。
也为了确保基础服务的业务是否运转正常,我们的jmeter脚本都是按照dubbo服务进行拨测的,并不是按zk哦,所以工作量不小呢。
我等测试菜鸟们将整理好的拨测脚本放置生产环境进行拨测,结果不定期就会受到告警邮件和短信,提示服务异常。然而,登录系统查看后,报错为:Long connection establishment failed, please chick server or restart Jmeter ! 这种错,明显就是误报嘛,起码说明我们的服务正常运转中。最终,这种问题还是落到了我等测试党头上,要将jmeter脚本的稳定性提高,要健壮,不能误报。
下来就是这个问题的解决过程了~
作为测试人员定位这种问题,还是比较痛苦的,因为我压根不知道这么多jar包具体都是干什么的,出现这个问题我应该去排查哪个jar包???
1)dubbo插件,第一瞄头放在了我们开发的dubbo插件上,是不是生产的jar包不对
2)拉取生产jmeter,对比lib包。我们本地jmeter没有出现过这个问题,所以通过lib对比下,发现好多jar包的版本不一致(生产环境是公共拨测环境,不光运行我们的dubbo脚本)
3)复现问题,如果是jar版本问题,那应该是可复现的问题。在本地启动生产的jmeter,然后运行出告警的脚本,n多个请求中竟然有一两个请求失败了,报错为:Long connection establishment failed, please chick server or restart Jmeter ! 是的,问题复现了,然后再运行一次,咦,全部成功,再运行第三次,又是全部成功。问题是偶现的嘛???为了再次复现问题,试着关闭jmeter重新打开,然后运行脚本,发现又复现问题了。。。最终,找到问题的复现规律,然后通过jmeter控制台日志看到是dubbo重连失败导致的错误。
4)jmeter命令行窗口中显示nettyclient连接dubbo服务失败,然后将重点放在了netty包上,生产的包版本确实跟我们本地的版本不一致。然后将netty jar换了,按照上面的重现步骤试着复现问题,问题再没出现过。
到此,算是找到问题的原因了,JMeter 2.11 测试dubbo请求需netty-3.2.5-Final.jar,生产用的是3.2.9版本,到底为什么会有此差异呢?可能开发此插件时用的就是3.2.5版本,如果用高版本就会出现一些不兼容吧,这是测试党的猜测,具体原因还需深究,下来跟开发同学确认后,再更新帖子。。。(可能有人疑问,为什么不一开始找开发插件的同学进行问题确认,是因为这个大佬现在已经不维护此工具了,很久以前的代码了)
以上为本人第一次手记,如有不足之处,还请帮忙指正。
posted on 2019-09-27 17:04 BigbigMeng 阅读(311) 评论(0) 收藏 举报
浙公网安备 33010602011771号