在手动停止线程之前,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 从服务器获得答案的主要内容,如果未能解决你的问题,请参考以下文章