英文:
JDBC and HTTP request on multiple threads
问题
我有以下结构:
>>线程
>> JDBC 请求,从表中获取前100个结果,并用“,”分隔符连接它们(例如“1,2,3,4,5”)
>> DELETE 调用,使用由 JDBC 请求创建的包含这些 ID 的变量,用“,”分隔符。
事情在1个线程上运行正常,但一旦增加线程,问题就会发生。例如,使用2个线程时出现的问题是,JDBC 请求会执行2次并获取相同的 ID,然后 DELETE 调用会执行2次 - 第一次成功,因为调用是有效的,但在下一次调用时(用户2/2),它会失败,因为这些 ID 已经被删除。
我正在寻找解决这个问题的任何想法。
尝试过“仅一次控制器”,但线程数量会下降,例如到100,然后会下降,对于主请求,我看到只有1个。
英文:
I have the following structure:
>>Thread
>> JDBC request which takes top 100 resuts from a table and concatenate them with ',' separator (e.g. "1,2,3,4,5")
>> DELETE call which is using the variable created by the JDBC request which include those IDs with "," separator.
The things work on 1 thread, but the problem occur once I increase the threads. The problem, that arise with 2 threads, for example, is that the JDBC request is getting executed 2 times and gets the same IDs, then the DELETE call is executed 2 times - first time is successfull, because the call is valid, but on the next call (user 2/2) it fails, because those ids are already deleted.
I'm searching for any ideas how that can be solved.
Tried with "Once Only Controller", but the threads are going down up to e.g. 100, and then going down and for the main request I see there is only 1.
答案1
得分: 1
"Instead of "top 100" you should go for LIMIT and OFFSET"
作为“LIMIT”,您可以使用100,作为“OFFSET”,您可以使用当前线程号乘以100
可以使用如下方式实现,即使用__threadNum()和__jexl3()函数组合
${__jexl3(${__threadNum} * 100,)}
有关JMeter函数概念的更多信息:Apache JMeter Functions - An Introduction
英文:
Instead of "top 100" you should go for LIMIT and OFFSET
As the LIMIT
you can use 100 and as the OFFSET
you can use current thread number multiplied by 100
It can be achieved using i.e. __threadNum() and __jexl3() functions combination
${__jexl3(${__threadNum} * 100,)}
More information on JMeter Functions concept: Apache JMeter Functions - An Introduction
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论