NetWorker:依程序疑難排解高記憶體或 CPU 使用率
Summary: 本知識文章概述如何故障診斷程序的高記憶體和/或 CPU 使用率。
Instructions
在故障診斷 NetWorker 相關問題時,可能會判斷一或多個程序正在消耗大量的運算資源。操作系統命令(如 top 或 Windows 任務管理器)可能會提供系統使用方式的時間點見解;但是,我們也可以擷取指定時段內的系統資源使用率,並將其與其他系統記錄進行比較。
NetWorker 記錄和程序詳述於下方:
本知識文章提供使用作業系統功能和記錄的方法。非指令檔方法:NetWorker:如何使用 nsrwatch 公用程式故障診斷 NetWorker 中的明顯無回應。
Microsoft Windows:
Microsoft Windows 系統上,有數種圖形工具,例如工作管理員和效能監視器,可用於監視特定程序的資源使用方式。在本 KB 中,我們將介紹一個簡單的批次指令檔,可執行此指令檔來為指定程序加上時間戳記,並使用使用者定義的時間間隔顯示 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 等工具來監控進程的系統資源使用方式。 在本 KB 中,我們將介紹一個簡單的 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 伺服器複製檔案。