JMeter 压测Server Agent无法监控资源问题,PerfMon Metrics Collector报Waiting for sample,Error loading results fil

本文档详述了使用JMeter性能监控插件时遇到的常见问题及其解决方案,包括防火墙配置、端口冲突处理、启动命令使用、等待样本状态解释及结果文件加载错误修复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JMeter 压测Server Agent无法监控资源问题,PerfMon Metrics Collector报Waiting for sample,Error loading results file - see file log, Can't accept UDP connections java.net.BindException: Address already in use 各种疑难杂症

如何安装插件此博主已经说得很详细了。

https://www.cnblogs.com/saryli/p/6596647.html

但是需注意几点:

1.修改默认端口,这样可以避免掉一个问题。ServerAgent默认是4444端口,当然你可以修改,比如:./startAgent.sh –udp-port 0 –tcp-port 3450这样。

2.ServerAgent-2.2.1.zip下载下来之后拷贝到服务器上之后再进行解压。unzip ServerAgent-2.2.1.zip

 我的安装目录是/usr/local/Jmeter/ServerAgent-2.2.3

 

(Jmeter从入门到MMP)

在使用Jmeter的性能监控插件时遇到了几个问题mark一下:

1.防火墙未关闭

2.端口号被占用。linux下输入命令 lsof -i:4444查看是否有被占用。如果有,使用kill -9 25601关闭

被占用会报如下错误

[root@business01 ServerAgent-2.2.3]# sh startAgent.sh
INFO 2019-01-25 15:52:36.544 [kg.apc.p] (): Binding UDP to 4444
ERROR 2019-01-25 15:52:36.582 [kg.apc.p] (): Can't accept UDP connections
java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.DatagramChannelImpl.bind(DatagramChannelImpl.java:691)
at sun.nio.ch.DatagramSocketAdaptor.bind(DatagramSocketAdaptor.java:91)
at kg.apc.perfmon.PerfMonWorker.listenUDP(PerfMonWorker.java:144)
at kg.apc.perfmon.PerfMonWorker.startAcceptingCommands(PerfMonWorker.java:107)
at kg.apc.perfmon.AgentTool.processParams(AgentTool.java:72)
at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:63)
at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at kg.apc.cmd.UniversalRunner.main(UniversalRunner.java:174)
INFO 2019-01-25 15:52:36.583 [kg.apc.p] (): Binding TCP to 4444
ERROR 2019-01-25 15:52:36.586 [kg.apc.p] (): Can't accept TCP connections
java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67)
at kg.apc.perfmon.PerfMonWorker.listenTCP(PerfMonWorker.java:135)
at kg.apc.perfmon.PerfMonWorker.startAcceptingCommands(PerfMonWorker.java:114)
at kg.apc.perfmon.AgentTool.processParams(AgentTool.java:72)
at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:63)
at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at kg.apc.cmd.UniversalRunner.main(UniversalRunner.java:174)

3.未成功启动startAgent。下图是成功启动图。

启动时使用此命令nohup sh startAgent.sh &(注意后面有一个&符号,此命令是不中断在后台运行)

4.(这是主要问题)很多人都会出现如下问题Waiting for samples,

执行了就是不出图形结果。解决方法:写入一个文件。

但是不知道怎么写入文件呀,报Error loading results file - see file log错误。

解决方法:新建一个txt文件,并添加以下文本之后保存。

<?xml version="1.0" encoding="UTF-8"?>
<testResults version="1.2">
</testResults>

 也可直接,D:\服务器性能监控数据.csv

成功效果图

弹出下图警告直接Overwrite existing file ,此警告是提示文件已存在。

从左到右的按钮意思是:添加到现有文件、不要开始、覆盖现有文件

5(这个也重要)如果有生成文件或者已创建的txt里有文字了,但是 还是显示Waiting for samples。那是因为你只发送了一条请求,执行时间少于1秒,所以线程组循环次数设置为永远吧!

 2号问题报错的开始

[root@web01 ServerAgent-2.2.3]# sh startAgent.sh
INFO 2018-12-11 17:39:44.960 [kg.apc.p] (): Binding UDP to 4444
ERROR 2018-12-11 17:39:45.022 [kg.apc.p] (): Can't accept UDP connections
java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.DatagramChannelImpl.bind(DatagramChannelImpl.java:691)
at sun.nio.ch.DatagramSocketAdaptor.bind(DatagramSocketAdaptor.java:91)
at kg.apc.perfmon.PerfMonWorker.listenUDP(PerfMonWorker.java:144)
at kg.apc.perfmon.PerfMonWorker.startAcceptingCommands(PerfMonWorker.java:107)
at kg.apc.perfmon.AgentTool.processParams(AgentTool.java:72)
at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:63)
at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at kg.apc.cmd.UniversalRunner.main(UniversalRunner.java:174)
INFO 2018-12-11 17:39:45.024 [kg.apc.p] (): Binding TCP to 4444
ERROR 2018-12-11 17:39:45.029 [kg.apc.p] (): Can't accept TCP connections
java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67)
at kg.apc.perfmon.PerfMonWorker.listenTCP(PerfMonWorker.java:135)
at kg.apc.perfmon.PerfMonWorker.startAcceptingCommands(PerfMonWorker.java:114)
at kg.apc.perfmon.AgentTool.processParams(AgentTool.java:72)
at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:63)
at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at kg.apc.cmd.UniversalRunner.main(UniversalRunner.java:174)

 2号问题的结束

posted on 2018-12-12 11:38 Zing_Z 阅读(...) 评论(...) 编辑 收藏

### JMeter Server Agent 的配置及放置位置 在使用 JMeter 进行试时,Server Agent 是一种用于监控服务器资源(如 CPU、内存、磁盘 I/O 等)的重要工具。以下是关于 Server Agent 的放置位置及配置方法的详细说明: #### 1. Server Agent 的放置位置 Server Agent 应该放置在需要被监控的目标服务器上。这是因为 Server Agent 主要负责采集目标服务器的性能指标,并将这些数据发送给 JMeterPerfMon 监听器[^1]。确保目标服务器允许 Server Agent 的运行,并且具有足够的权限来访问系统资源。 - **Windows 系统**:将 Server Agent到目标服务器上的任意目录,例如 `C:\ServerAgent`。 - **Linux/Mac 系统**:通常将其解到 `/opt/server-agent` 或 `/usr/local/server-agent` 等目录下。 #### 2. Server Agent 的配置方法 Server Agent 的配置主要包括以下几个步骤: ##### a. 下载并解 Server Agent 从官方或可信的第三方资源下载 Server Agent 工具,并将其解到目标服务器的指定目录[^5]。 ##### b. 启动 Server Agent 在目标服务器上启动 Server Agent。根据操作系统的不同,启动方式有所区别: - **Windows 系统**:双击 `startAgent.bat` 文件即可启动。 - **Linux/Mac 系统**:通过命令行执行以下命令: ```bash chmod +x startAgent.sh ./startAgent.sh ``` ##### c. 配置监听端口 默认情况下,Server Agent 使用 `4444` 端口进行通信。如果需要更改端口,可以编辑 `config.properties` 文件,修改 `agent.listen.port` 属性[^4]。例如: ```properties agent.listen.port=4445 ``` 然后重新启动 Server Agent 以应用更改。 ##### d. 防火墙配置 确保目标服务器的防火墙允许 Server Agent 的监听端口(默认为 `4444`)的入站和出站连接。否则,JMeterPerfMon 监听器将无法Server Agent 通信[^3]。 #### 3. 在 JMeter 中配置 PerfMon 监听器 完成 Server Agent 的部署后,需要在 JMeter 中添加 PerfMon Metrics Collector 监听器以接收监控数据: - 打开 JMeter 试计划,在线程组中右键选择“添加” -> “监听器” -> “jp@gc - PerfMon Metrics Collector”。 - 在 PerfMon Metrics Collector 中,点击“Add”按钮,输入目标服务器的 IP 地址、Server Agent 的监听端口以及需要监控的指标(如 CPU、内存等)。 #### 4. 验证配置 启动 JMeter 试计划后,PerfMon Metrics Collector 应该能够实时显示目标服务器的性能指标。如果未显示数据,请检查以下内容: - Server Agent 是否正常运行。 - JMeterServer Agent 之间的网络连通性。 - Server Agent 的监听端口是否正确配置。 ### 示例代码 以下是一个简单的 Shell 脚本,用于自动化启动 Linux 系统上的 Server Agent: ```bash #!/bin/bash # 设置工作目录 cd /opt/server-agent || exit # 检查并赋予执行权限 chmod +x startAgent.sh # 启动 Server Agent nohup ./startAgent.sh > server-agent.log 2>&1 & echo "Server Agent started successfully." ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值