zyanycall / stressTestPlatform

基于Jmeter实现的在线压测和管理Jmx的平台。
Apache License 2.0
627 stars 345 forks source link

脚本单独停止后再启动就报错 #20

Closed smooth00 closed 5 years ago

smooth00 commented 5 years ago

1、脚本单独停止后,再启动会报错: image 后台报错:java.lang.IllegalStateException: Files are still open, cannot change base directory 除非点击【全部停止】,然后再启动才正常 2、还有个问题,分布式节点是两个,其中一个为本点节点。但显示的并发数是3 image

image 并发数应该是2才对(因为脚本是按1个线程运行,两节点是两线程)

zyanycall commented 5 years ago

1、脚本单独停止后,再启动会报错: image 后台报错:java.lang.IllegalStateException: Files are still open, cannot change base directory 除非点击【全部停止】,然后再启动才正常 2、还有个问题,分布式节点是两个,其中一个为本点节点。但显示的并发数是3 image

image 并发数应该是2才对(因为脚本是按1个线程运行,两节点是两线程)

感谢提供bug。

  1. 我本地模拟了很多次也没出现这个问题。

这个问题我解释一下提示的含义:文件仍然被使用,无法更改base目录。这个base目录是jmx文件的父级目录,而Jmeter默认的脚本启动时是需要设置这个base目录的,用于Jmeter内部其他的主要对文件的操作。 我的代码对这里是有处理的: 如果是没有任何正在启动的脚本,也就没有任何的文件被使用,则直接change base。 如果是有正在启动的脚本,这通过反射的方式,不去校验什么文件流,直接修改base。

你这个异常出现的可能,原因应该是实际上有正在启动的脚本,同时这个脚本使用了文件流,然后我的系统判断错了认为没有正在启动的脚本,才会报这个错误。

而我认为你这个是偶然的问题,要不然就是我没有掌握复现的方式。

建议:

  1. 详细描述你的操作步骤,并且把脚本发给我,确认这是必然事件。
  2. 确认代码升级到最新,这个判断需要 StressTestUtils 中最新代码。

2.问题,已经修复。 提交。

smooth00 commented 5 years ago

第2问题验证解决了;第1个问题还是存在,确认是判断环节报的错误,但跟踪代码了没发现明显的问题(因为点击停止脚本时也确实调了stopLocal,按理应该停止脚本了) weixin-Test.zip 我把测试脚本发给你,操作步骤就是:1.上传完脚本和同步完ID2.csv后,点击启动脚本,脚本能正常运行(监控也正常);2.停止脚本(执行操作里的,停止单个脚本);3.再次点击启动脚本(也是执行操作里的,启动单个脚本),就会报错。

zyanycall commented 5 years ago

第2问题验证解决了;第1个问题还是存在,确认是判断环节报的错误,但跟踪代码了没发现明显的问题(因为点击停止脚本时也确实调了stopLocal,按理应该停止脚本了) weixin-Test.zip 我把测试脚本发给你,操作步骤就是:1.上传完脚本和同步完ID2.csv后,点击启动脚本,脚本能正常运行(监控也正常);2.停止脚本(执行操作里的,停止单个脚本);3.再次点击启动脚本(也是执行操作里的,启动单个脚本),就会报错。

多谢提供脚本。已经提交修复。

zyanycall commented 5 years ago

第2问题验证解决了;第1个问题还是存在,确认是判断环节报的错误,但跟踪代码了没发现明显的问题(因为点击停止脚本时也确实调了stopLocal,按理应该停止脚本了) weixin-Test.zip 我把测试脚本发给你,操作步骤就是:1.上传完脚本和同步完ID2.csv后,点击启动脚本,脚本能正常运行(监控也正常);2.停止脚本(执行操作里的,停止单个脚本);3.再次点击启动脚本(也是执行操作里的,启动单个脚本),就会报错。

遇到新问题再打开或者另开issue。

tianjinbaoo commented 4 years ago

遇到同样的问题,应该是脚本读取参数化文件的时候异常,但是没有正常关闭资源,导致资源占用。