在手动停止线程之前,JMeter 没有通过基于 TCP 协议的 JSON RPC 从服务器获得答案

Posted

技术标签:

【中文标题】在手动停止线程之前,JMeter 没有通过基于 TCP 协议的 JSON RPC 从服务器获得答案【英文标题】:JMeter doesn't have an answer from server by JSON RPC over TCP protocol until thread is stopped manually 【发布时间】:2012-10-18 13:05:06 【问题描述】:

我测试了一个服务器,它通过 TCP 响应 JSON RPC 请求。 我使用 JMeter,最新的可用版本 2.8 r1393162。 我的测试计划包含带有 JSON RPC 版本 1.0 请求的 TCP 采样器 "method": "registrate", "params": [1,1], "id": 100。 当我启动它时,JMeter 在我停止线程之前不会给我答案。服务器接受了我的请求(在他的日志中查看)。 当我停止它时,我会在查看结果树中看到答案。

这是采样器中的错误还是我的测试中的错误? 这是测试服务器的错误吗?

【问题讨论】:

该请求采样器是使用 jmeter 代理保存的还是您手动创建的?您确定这是您的应用发送的内容吗? 手动。我不知道代理,它允许记录 TCP 请求。存在吗?只知道 HTTP 代理。 那么当您尝试保存浏览器与 jMeter 代理的交互时保存了什么? 【参考方案1】:

继 cmets 之后,jMeter 代理在您准备测试时非常有用。

因此,首先使用代理将您的操作保存在浏览器中(您会看到采样器和其他组件在您单击时出现,并且您会知道究竟发送了什么)。

以下是完整的使用说明:http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf

启用的一个重要选项是 jMeter 代理的 Put each group in a new transaction controller 属性。因为在浏览器中的一次点击通常会导致在后台发送多个请求(例如,每个资源,如页面、js、图像都是单独的获取请求)。使用此选项,jMeter 将每个用户操作的所有请求分组到单独的事务控制器中。你会看到你的测试和你的听众(图表、表格)看起来有多干净。

以下是一些额外的提示: https://***.com/a/12068377/465710

【讨论】:

我不使用 HTTP,而是 JSON RPC over TCP 好的,您使用的是 JSON RPC,但我假设您使用的是 HTTP 作为传输层。所以你使用的是 TCP 套接字流? 例如AFAIK GWT 使用 HTTP 作为其传输层,我使用 jMeter 成功测试了它。你可以尝试使用代理保存,看看 jMeter 是怎么看的。

以上是关于在手动停止线程之前,JMeter 没有通过基于 TCP 协议的 JSON RPC 从服务器获得答案的主要内容,如果未能解决你的问题,请参考以下文章

jmeter录制脚本

jmeter两个线程组怎么关联?

Jmeter如何控制线程执行?

JMeter_模拟微信多用户并发

jmeter 并发上传不同的文件

Jmeter_选项_函数助手_RandomString的用法