JMeter 中是否有更多线程安全变量可用于 get() 和 set() 变量?
Is there a more thread safe variable available in JMeter to get() and set() variables?
随着更积极的负载,我注意到 2 个或更多线程设置完全相同的变量值,从而导致使用所述值的后续请求失败。我正在使用 JSR223 后处理器,其中我有以下代码:
URL url = new URL(vars.get("response_url"));
String path = url.getFile();
vars.put("request_path", path);
检查请求后,我发现有时一个线程将 "request_path" 设置为 "example1",而另一个线程将该变量设置为完全相同的值。我不想减少线程数或加速时间;那不是一个选择。
在 JMeter 中使用 getting/setting 变量时,是否有比 "vars" 更线程安全的变量?或者有其他方法可以防止这种情况发生吗?
Vars 特定于 1 个线程(所以这里不需要线程安全)所以在核心 jmeter 中你描述的事情不会发生。
如果某些第 3 方插件发生这种情况,您应该向项目报告错误。
出现问题时尝试进行线程转储以查看发生了什么
根据Top 8 JMeter Java Classes You Should Be Using with Groovy article vars stands for JMeterVariables class instance which in its turn belongs to JMeterContext
如果您查看 JMeterContextService class source you will see that JMeterContext is declared as ThreadLocal and Thread-Local Storage Pattern 意味着其他线程无法访问这些变量。
所以我建议检查这个 ${response_url}
从哪里来,例如 Debug Sampler or Sample Variables property as most probably the issues is not connected with using vars
shorthand from Groovy code (you are using Groovy,你不是吗?)
随着更积极的负载,我注意到 2 个或更多线程设置完全相同的变量值,从而导致使用所述值的后续请求失败。我正在使用 JSR223 后处理器,其中我有以下代码:
URL url = new URL(vars.get("response_url"));
String path = url.getFile();
vars.put("request_path", path);
检查请求后,我发现有时一个线程将 "request_path" 设置为 "example1",而另一个线程将该变量设置为完全相同的值。我不想减少线程数或加速时间;那不是一个选择。
在 JMeter 中使用 getting/setting 变量时,是否有比 "vars" 更线程安全的变量?或者有其他方法可以防止这种情况发生吗?
Vars 特定于 1 个线程(所以这里不需要线程安全)所以在核心 jmeter 中你描述的事情不会发生。
如果某些第 3 方插件发生这种情况,您应该向项目报告错误。
出现问题时尝试进行线程转储以查看发生了什么
根据Top 8 JMeter Java Classes You Should Be Using with Groovy article vars stands for JMeterVariables class instance which in its turn belongs to JMeterContext
如果您查看 JMeterContextService class source you will see that JMeterContext is declared as ThreadLocal and Thread-Local Storage Pattern 意味着其他线程无法访问这些变量。
所以我建议检查这个 ${response_url}
从哪里来,例如 Debug Sampler or Sample Variables property as most probably the issues is not connected with using vars
shorthand from Groovy code (you are using Groovy,你不是吗?)