如何在无端口号的情况下通过JMeter采集CPU与内存使用率
问题描述
尝试使用JMeter监听器分类下的jp@gc – PerfMon Metrics Collector插件采集目标主机CPU、内存使用率,该插件要求必须同时配置主机地址(Host)与端口号才可正常运行。当前仅掌握目标主机地址,无对应可用端口号,配置后运行返回连接错误。
相关操作记录:
I checked with jp@gc – PerfMon Metrics Collector under Listeners
返回错误码:
Response code:Non HTTP response code: org.apache.http.conn.HttpHostConnectException
对应错误信息:
Response message:Non HTTP response message: Connect to *********** failed: Connection timed out: connect
核心需求:找到无需额外配置未知专属端口,即可在JMeter中完成CPU、内存使用率采集的可行方案。
可行方案
首先明确:跨主机采集性能指标本质是网络通信,不存在完全不依赖端口的实现方式,以下方案均使用服务器常规开放端口、或不需要额外配置专属未知端口,可直接落地:
- 基于SSH协议的监控采集(无需部署独立监控Agent)
使用JMeter的SSH Monitors插件,依托目标服务器默认开放的SSH服务端口(默认22,为服务器运维常规开放端口,不需要额外部署单独的监控服务开放新端口),仅需目标主机的SSH登录凭证即可采集CPU、内存、磁盘、网络等核心性能指标,不需要配置PerfMon要求的专属Agent端口。
操作步骤:- 打开JMeter插件管理器,搜索
SSH Monitors完成安装后重启JMeter - 在线程组下添加监听器
SSH PerfMon Collector - 配置页填入目标主机IP、SSH端口(默认填22即可,除非服务器手动修改过SSH端口)、登录用户名、认证信息(密码或登录私钥)
- 勾选需要采集的CPU、内存指标项,启动压测即可自动同步采集性能数据
- 打开JMeter插件管理器,搜索
- 本地采集后导入JMeter分析(无任何端口配置要求)
如果目标主机无法通过SSH访问,可直接在目标主机本地用系统自带工具采集性能数据,压测结束后导入JMeter做时间维度对齐分析:- Linux主机可直接通过
vmstat、mpstat、free等系统自带命令,按固定时间间隔记录CPU、内存使用率,导出为csv格式文件 - Windows主机可直接使用系统自带的性能监视器(perfmon),配置CPU、内存相关计数器后按时间间隔采集数据,导出为csv格式文件
- 在JMeter中通过
CSV Data Set Config组件导入采集到的性能数据,和压测请求结果按时间戳对齐即可完成关联分析
- Linux主机可直接通过
- 使用PerfMon插件默认端口部署(无需查找未知端口)
PerfMon插件配套的ServerAgent默认监听端口为固定值4444,不需要额外配置随机端口:只需要在目标主机下载对应版本的ServerAgent压缩包,解压启动后会自动监听4444端口,此时在PerfMon Metrics Collector配置页填入主机IP+4444端口即可正常采集数据。
之前出现连接超时错误,本质是目标主机对应端口没有启动监听服务,或防火墙拦截了对应端口的请求,不是插件本身功能异常。
内容的提问来源于stack exchange,提问作者Pankaj K.
相关产品推荐
相关产品推荐

