jmeter 查询超时在JDBC请求中无效

u3r8eeie  于 2023-03-23  发布在  其他
关注(0)|答案(2)|浏览(258)

我有一个JDBC请求,我将查询超时固定为30秒。但大多数情况下,它会无休止地进行。请看下面的截图,如果需要任何更改,请告诉我。我还添加了一个持续时间Assert,但它从未执行。
查询类型- Select语句

是否有任何解决方法可以在30秒后中断等待?
先谢了...

f87krz0w

f87krz0w1#

这可能是底层JDBC驱动程序的情况,即查看Different JDBC Query Timeout behaviour in Thin and OCI Driver
如果客户端在Linux系统上运行,我可以通过瘦驱动程序确认查询超时在18.3和19.3驱动程序上正常工作。但是,如果客户端在Windows 7系统上运行,则查询超时在使用瘦驱动程序时没有影响。只有在Windows上使用OCI驱动程序时,查询超时才能正常工作。
因此,如果您正在运行Windows,您可以考虑切换到JDBC OCI驱动程序而不是瘦驱动程序。
Duration Assertion不会有任何效果,因为它只会在采样器结束时将采样器标记为失败。如果采样器“无休止地”,则Assert不会有任何效果,因为它不会终止采样器。
如果您不能切换到OCI驱动程序,您可以考虑使用JSR223采样器而不是JDBC请求,并通过采样超时预处理器设置最大执行时间(尽管它可能会使连接保持打开状态)

eivgtgni

eivgtgni2#

在JMeter中,可以使用以下步骤设置查询超时:
在测试计划中添加“JDBC连接配置”元素:
右键单击左窗格中的“Test Plan”元素,然后选择“Add”〉“Config Element”〉“JDBC Connection Configuration”。填写必填字段,如“Variable Name”、“Connection URL”、“JDBC Driver class”、“Username”和“Password”。设置Oracle瘦连接的查询超时:
在“JDBC连接配置”元素中,将以下行添加到“连接属性”部分:

oracle.jdbc.ReadTimeout=30000

这会将Oracle精简驱动程序的读取超时设置为30秒(30000毫秒)。
将“JDBC请求”元素添加到您的测试计划中:
右键单击左窗格中的“Thread Group”,然后选择“Add”〉“Sampler”〉“JDBC Request”。将“Variable Name”设置为“JDBC Connection Configuration”元素中使用的相同值。将SELECT语句添加到“Query”部分。将“Duration Assertion”添加到JDBC Request:
右键单击“JDBCRequest”元素并选择“Add”〉“Assertions”〉“Duration Assertion”。(ms)”字段到30000(30秒)。现在,您的测试计划对于Oracle精简连接的查询超时应为30秒,持续时间Assert将检查响应时间是否超过30秒。如果超时仍然没有按预期工作,请考虑检查数据库服务器是否存在性能问题或瓶颈,因为问题可能与JMeter无关。

相关问题