NetWorker:按进程对内存或 CPU 使用率高的问题进行故障处理
Summary: 本知识库文章概述了如何对进程的高内存和/或 CPU 使用率进行故障处理。
Instructions
在对 NetWorker 相关问题进行故障处理时,可以确定一个或多个进程正在占用大量计算资源。操作系统命令(如 top 或 Windows 任务管理器)可以提供系统使用情况的时间点见解;但是,我们还可以捕获给定窗口内的系统资源使用情况,并将其与其他系统日志进行比较。
NetWorker 日志和进程详见下文:
本知识库文章提供了一种使用操作系统功能和日志记录的方法。无脚本方法:NetWorker:如何使用 nsrwatch 实用程序对 NetWorker 中的明显挂起问题进行故障处理。
Microsoft Windows:
在 Microsoft Windows 系统上,有多个图形工具,如任务管理器和性能监视器,可用于监视特定进程的资源使用情况。在本知识库文章中,我们将介绍一个简单的批处理脚本,该脚本可以运行到时间戳,并使用用户定义的时间间隔显示指定进程的 CPU 和内存使用情况。
首先,我们必须确定必须监控的过程。这可能因问题而异。NetWorker 进程和端口应该有助于缩小进程名称及其作用范围。
您可以使用以下方法识别 NetWorker 服务器上的进程:
- 任务管理器。
- 任务列表
- nsrrpcinfo -p localhost (需要 NetWorker 服务器或 NetWorker 扩展客户端软件包)。
1.创建包含以下内容的.bat脚本:
@echo OFF
: x
wmic os get LocalDateTime /value >> performance_monitor.out
wmic path win32_perfformatteddata_perfproc_process where IDProcess="PID" get Name, PercentProcessorTime, PrivateBytes, IDProcess /format:list >> performance_monitor.out
timeout INTERVAL_IN_SECONDS
goto x
其中:
PID = 要监视的进程的进程 ID。
INTERVAL_IN_SECONDS = 数值,表示每次运行报告之间的秒数。
2.将脚本 process-monitor.bat 保存在您选择的位置。
3.打开管理员命令提示符并使用 cd 转至保存脚本的目录。
4.运行脚本。

这将在运行脚本的目录中创建 process-monitor.out 文件。该文件包含:
LocalDateTime=20240307112701.555000-300
IDProcess=6436
Name=nsrd
PercentProcessorTime=0
PrivateBytes=23605248
LocalDateTime=20240307112723.266000-300
IDProcess=6436
Name=nsrd
PercentProcessorTime=0
PrivateBytes=23605248
LocalDateTime=20240307112729.634000-300
IDProcess=6436
Name=nsrd
PercentProcessorTime=0
PrivateBytes=23605248
LocalDateTime=20240307112735.457000-300
IDProcess=6436
Name=nsrd
PercentProcessorTime=0
PrivateBytes=23670784
其中:
LocalDateTime = 显示为 YYYYMMDDHHMMSS 的日期和时间。
IDProcess = 在脚本中输入的 PID。
名称 = 与 PID 关联的进程的名称。
PercentProcessorTime = 返回此进程的所有线程在 100 纳秒内使用处理器执行指令所经过的时间。
PrivateBytes = 此进程在内存中分配的无法与其他进程共享的当前字节数。
5.要停止脚本,请使用 CTRL+C ,系统会提示您停止或继续脚本。
这些值不是任何 NetWorker 代码的一部分,并在以下Microsoft文章中详细介绍: https://learn.microsoft.com/en-us/previous-versions/aa394323(v=vs.85)
Linux:
在 Linux 服务器上,您可以使用 诸如 top 之类的工具来监视进程的系统资源使用情况。 在本知识库文章中,我们将介绍一个简单的 shell 脚本,该脚本可以运行到时间戳,并使用用户定义的时间间隔显示指定进程的 CPU 和内存使用情况。
1.通过 SSH 登录到 NetWorker 服务器。
2.切换到 root:
sudo su -
3.获取要监视的 NetWorker 进程的 PID:
ps -ef | grep nsr
4.创建包含以下内容的.sh:
vi process_monitor.sh
#!/bin/bash
#Get Date
cat /proc/meminfo > /tmp/`hostname`_monitor-pid.out
cat /proc/cpuinfo >> /tmp/`hostname`_monitor-pid.out
#Monitor PID
while true; do
echo "Press [CTRL+C] to stop the loop."
DATE=$(date +%Y/%m/%d-%H:%M:%S)
echo -e "\\n$DATE" >> /tmp/`hostname`_monitor-pid.out ; ps -p PID -o %cpu,%mem,cmd >> /tmp/`hostname`_monitor-pid.out
# Wait 5 seconds (change as per your discretion)
sleep 5
done
其中:
PID = 要监视的进程的进程 ID。
睡眠 5 = 等待 5 秒并再次运行,您可以根据自己的判断更改此间隔。
5.使脚本可执行:
chmod +x process_monitor.sh
6.运行脚本:
./process_monitor.sh
nve:~ # ./process_monitor.sh
Press [CTRL+C] to stop the loop.
Press [CTRL+C] to stop the loop.
Press [CTRL+C] to stop the loop.
Press [CTRL+C] to stop the loop.
Press [CTRL+C] to stop the loop.
Press [CTRL+C] to stop the loop.
Press [CTRL+C] to stop the loop.
^C
nve:~ #
7.让脚本在您想要监视的持续时间内运行,或手动重现发生可疑资源利用率过高的问题。
8.要停止脚本,请使用 CTRL+C ,系统会提示您停止或继续脚本。
9 停止它。该脚本在 /tmp 下使用系统主机名称创建输出文件:
nve:~ # ls -l /tmp | grep monitor-pid
-rw------- 1 root root 2030 Jun 3 12:29 nve_monitor-pid.out
该文件的内容包括脚本中指定的进程的 CPU 和内存利用率的时间戳。
nve:~ # tail -12 /tmp/nve_monitor-pid.out
2024/06/03-12:28:54
%CPU %MEM CMD
0.0 0.3 /usr/sbin/nsrd
2024/06/03-12:29:02
%CPU %MEM CMD
0.0 0.3 /usr/sbin/nsrd
2024/06/03-12:29:07
%CPU %MEM CMD
0.0 0.3 /usr/sbin/nsrd
NetWorker (Linux):如何将文件复制到 Linux NetWorker 服务器/从 Linux NetWorker 服务器拷贝文件。