PerfMon Metrics Collector连接失败及API请求错误解决咨询
问题解决步骤
先处理API终端的400 Bad Request错误
这个错误是JMeter发送的HTTP请求语法完全不符合API要求(比如误发了'test'这类无效请求),按以下步骤排查:
- 检查HTTP Request采样器核心配置:
- 确认请求方法(GET/POST/PUT等)和API文档要求一致,别选错方法。
- 核对请求路径,确保填的是正确的API接口地址,不是随便输入的'test'字符串。
- 检查请求头:如果API要求特定的
Content-Type(比如application/json),必须在HTTP Header Manager里添加对应配置,不然API无法识别请求格式。 - 验证请求体:如果是POST/PUT这类带请求体的请求,确认体内容格式符合API要求,别发送无意义内容。
- 用View Results Tree监听器验证:发送单个请求后,在监听器里查看JMeter实际发出的请求内容,和API文档对比,确保语法完全正确。
再处理JMeter PerfMon的连接拒绝错误
java.net.ConnectException: Connection denied是因为PerfMon监听器连不上监控目标的PerfMon Agent——PerfMon必须在被监控的机器/容器上运行Agent才能采集指标,解决步骤:
- 部署PerfMon Agent到数据库容器:
- 进入容器:
docker exec -it <你的数据库容器ID/名称> /bin/bash - 将PerfMon Agent的
CMDRunner.jar复制到容器内(可从JMeter的plugins目录获取,或直接在容器内下载) - 启动Agent:
java -jar CMDRunner.jar --tool PerfMonAgent --tcp-port 4444(端口可自定义,记好这个端口) - 配置容器端口映射:如果JMeter在宿主机器,需把容器的Agent端口映射到宿主,比如启动容器时加
-p 4444:4444,或用docker port <容器ID> 4444确认映射情况。
- 进入容器:
- 修正PerfMon监听器的目标配置:
- 不要填
127.0.0.1,除非容器和JMeter用的是host网络模式。正确的目标地址是数据库容器的IP(用docker inspect <容器ID>查看NetworkSettings.IPAddress字段),或者宿主IP+映射后的端口。 - 确保监听器里的端口和Agent启动的端口一致,指标类型(CPU、内存、I/O、网络)选择正确。
- 不要填
- 验证网络连通性:
在JMeter所在机器执行telnet <目标IP> 4444或nc -zv <目标IP> 4444,如果不通,检查容器防火墙、宿主防火墙是否阻断了该端口的通信。
内容的提问来源于stack exchange,提问作者Equanimity9121
相关产品推荐
相关产品推荐

