我在Jmeter中使用4个OS Process Samplers来启动二进制文件。不能说的远不止这些。
当我运行测试时,第一个OS Sampler不起作用。而且,我认为它不会失败或成功,只需要太长时间。什么都没发生。当我停止测试时,错误是它失败了,因为它被中断(由我)。
当我第二次运行测试时,第一个OS Sampler会立即运行,但第二个OS Sampler会出现同样的问题。
在第三次测试中,OS采样器1和2快速工作,但第三次测试没有。
在第四次测试中,OS采样器1,2和3工作,但不是第4次。
最后,在第五次测试中,所有操作系统采样器都可以工作。
总而言之,每个采样器在运行之前都需要进行试运行。
为什么呢?请帮忙。
答案 0 :(得分:2)
如果您使用OS Process Sampler来"启动"一个二进制文件我的期望是OS Process Sampler将等待直到二进制执行完成以记录执行时间,返回代码,任何输出等。这就是采样器的设计目的。
如果你需要在背景中发布一些东西""使用JMeter,你需要"作弊"一点点。至少有两个选项:
使用单独的Thread Groups。您可以将操作系统过程采样器放在单独的线程组中,其中包含1个虚拟用户和1个迭代。只要确保你有"连续运行线程组"在Test Plan级别框未选中
使用底层操作系统机制提供JMeter响应代码并输出它正在寻找。
例如,将您的程序启动为:
cmd /c pushd path_to_your_binary_location && your binary
nohup /path/to/your/binary > /dev/null 2>&1 &
有关从JMeter脚本执行本地和远程命令的更多信息,请参阅How to Run External Commands and Programs Locally and Remotely from JMeter。
答案 1 :(得分:0)
OS Sampler没有特别的理由以这种方式工作。 最有可能的问题来自底层的被调用代码。
你可以提供更多关于贝壳做什么的信息吗?