java - JSON 提取器 - 提取数据 - 不能应用于原语
问题描述
我正在使用 JMeter 5.1.1 并尝试进行负载测试。我添加了 JSON Extractor 以从 GET 请求中提取用户上下文,如下所示,
创建变量的名称:
schoolId;
teacherAccountId;
teacherProfileId;
teacherUserName;
schoolLogoId;
JSON路径表达式:
$.[?(@.type == 'SCHOOL')].id;
$.[?(@.type == 'SCHOOL')].accountId;
$.[?(@.type == 'SCHOOL')].profileId;
$.[?(@.type == 'SCHOOL')].username;
$.[?(@.type == 'SCHOOL')].icon.id;
当我执行 800 个用户线程时,客户端会出现以下错误。
它将为所有分配的变量(teacherProfileId; teacherUserName; schoolLogoId;
)运行一个循环
然后在从服务器端给出错误之后 - java.lang.OutOfMemoryError: Java heap space Dumping heap to java_pid23134.hprof
...
我能为此做些什么?JSON 提取器配置有什么问题吗?
注意 - 我已经将 JVM 堆大小增加到 4G
Error processing JSON content in JSON Extractor -Extract user data from user context, message: Filter: [?]['teacherAccountId'] can not be applied to primitives. Current context is: org.apache.http.conn.ConnectTimeoutException: connect timed out
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl$JMeterDefaultHttpClientConnectionOperator.connect(HTTPHC4Impl.java:336)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:374)
....
解决方案
您没有得到任何有效的 JSON 作为响应并调查
在 org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect 处连接超时
看起来您的应用程序过载,因此您没有收到正确的响应。
与JMeter脚本无关,需要报性能错误。如果时间允许,您可以增强您的报告以包含:
- 可以毫无问题地访问应用程序的最大用户数(考虑使用合理的启动期以逐步加入这 800 个用户)
- 饱和点- 知道这个阶段的最大吞吐量是多少以及用户数量是多少(您可以使用 ie
Hits/s vs Active Threads
listener检查它 - 应用程序是否有足够的空间来运行 CPU、内存等,因为错误可能是由于缺乏必要的资源引起的。您可以使用JMeter PerfMon Plugin检查它
- 检查您的应用程序日志是否有任何可疑条目
- 负载减少时应用程序是否恢复
推荐阅读
- php - 为什么 php 在尝试连接到本地套接字服务器时会挂起?
- rust - 如何在 Rust 中使用返回类型为 impl trait 的 Fn 特征?
- sql - 使用案例语句获取每周总订单数、已取消订单数和已取消订单百分比
- python - 如何在 tkinter 中使用 PIL 图像
- java - 从 DER ApplicationSpecific 对象获取可读数据
- java - Mockito @Mock 不使用 when() 存根方法
- php - 在 Laravel 中,公共路径和存储路径有什么区别?
- sql - 我有一个带有参数的 SQL Server 2012 sql 查询:@Region 有一个 WHERE 子句,我想根据 @Region 值设置它的值
- ios - 在 Swift 中选择 Continue 按钮时检查表视图中的空行
- scala - 如何断言错误类型中的单个字段?