我正在使用 Jmeter 对 Web 服务 SOAP 进行负载测试,在非 GUI 模式下,我从 300 线程数开始收到错误,这是通过以下规则的“响应断言”检测到的:“测试失败:文本不应包含 /“rta”:“FAIL”/”。
在 GUI 模式下,我可以在“查看结果树”中看到几个样本的错误:
IO 错误:网络适配器无法建立连接
我当前的 Oracle 配置是:
select current_utilization, limit_value
from v$resource_limit
where resource_name='sessions';
平均运输成本:
current_utilization, limit_value
177, 987
游标
select max(a.value) as highest_open_cur, p.value as max_open_cur
from v$sesstat a, v$statname b, v$parameter p
where a.statistic# = b.statistic#
and b.name = 'opened cursors current'
and p.name= 'open_cursors'
group by p.value;
平均运输成本:
highest_open_cur, max_open_cur
241, 4000
此错误与 Oracle 数据库中的某些配置有关吗?
更多信息: ...
数据库版本:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
TNS for 64-bit Windows: Version 12.2.0.1.0 - Production
Jmeter设置:
Inter® Xeon® Gold 6126 CPU @2.6 Ghz
4 Sockets, 4 Virtual Processors
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
HEAP=-Xms20G -Xmx20G -XX:MaxMetaspaceSize=128m
Windows Server 2016 Standard
测试计划:
- 线程组(线程数 320、启动期 37、循环数 1)
- 5 个 HTTP 请求,每个请求有 1 个断言。
- 1 个监听器 PerfMon 指标收集器
答案1
错误是由Oracle JDBC 驱动程序当无法与数据库建立连接时。
这是另一个例子有人遭受同样的问题。
我的预期是,你的应用程序没有正确使用连接池模式(或者根本没有实现),因此执行查询后不会关闭连接。我建议使用分析器工具检查您的应用程序,例如剖析器或者您的套件- 这样您将更清楚地了解正在发生的事情。
另一种解决问题的方法是针对数据库运行负载测试,即使用 JMeter 的直接执行查询,而无需中间的 SOAP API 调用JDBC 请求采样器。这样,您就可以说数据库工作正常,问题出在 Java 应用程序上(反之亦然)。请参阅使用 JMet 构建数据库测试计划的真正秘诀熟悉使用 JMeter 进行数据库负载测试的概念。