NetWorker: Felsökning av hög minnes- eller CPU-användning efter process
Summary: Den här kunskapsbasartikeln innehåller en översikt över hur du felsöker hög minnes- och/eller CPU-användning av en process.
Instructions
Vid felsökning av ett NetWorker-relaterat problem kan det fastställas att en eller flera processer förbrukar stora mängder beräkningsresurser. Operativsystemkommandon som top eller Windows Task Manager kan ge en inblick i systemanvändningen. Men vi kan också registrera användningen av systemresurser under ett visst fönster och jämföra den med andra systemloggar.
NetWorker-loggar och -processer beskrivs i:
I den här kunskapsbas-artikeln beskrivs en metod med operativsystemsfunktioner och loggning.Icke-skriptbaserat tillvägagångssätt: NetWorker: Felsöka en uppenbar låsning i NetWorker med hjälp av verktyget nsrwatch.
Microsoft Windows:
På Microsoft Windows-system finns det flera grafiska verktyg som Task Manager och Performance Monitor som kan användas för att övervaka resursanvändning genom en specifik process. I denna KB kommer vi att gå igenom ett enkelt batchskript som kan köras till tidsstämpel och visa CPU- och minnesanvändningen för en angiven process med hjälp av ett användardefinierat intervall.
Först måste vi bestämma vilken process som måste övervakas. Detta kan variera beroende på problemet. NetWorker-processer och -portar bör hjälpa dig att begränsa namnet på processerna och vad de gör.
Du kan identifiera processerna på NetWorker-servern med hjälp av:
- Aktivitetshanteraren.
- Uppgiftslista
- nsrrpcinfo -p localhost (Kräver NetWorker-server eller NetWorker utökat klientpaket).
1. Skapa ett .bat skript som innehåller följande:
@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
Var:
PID = process-ID för den process du vill övervaka.
INTERVAL_IN_SECONDS = det numeriska värde som anger hur många sekunder det går mellan varje gång rapporten körs.
2. Spara skriptet som process-monitor.bat på en plats som du väljer.
3. Öppna en kommandotolk för administratör och använd kommandot cd för att byta till katalogen där skriptet sparades.
4. Kör skriptet.

Detta skapar filen process-monitor.out i katalogen som skriptet kördes från. Filen innehåller:
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
Var:
LocalDateTime = Är datum och tid som visas som YYYYMMDDHHMMSS.
IDProcess = den PID som angavs i skriptet.
Namn = namnet på den process som PID är associerad med.
PercentProcessorTime = Returnerar förfluten tid som alla trådar i den här processen använde processorn för att köra instruktioner på 100 nanosekunder.
PrivateBytes = Aktuellt antal byte som den här processen har allokerat i minnet som inte kan delas med andra processer.
5. Om du vill stoppa skriptet använder du CTRL+C där du uppmanas att stoppa eller fortsätta skriptet.
Dessa värden ingår inte i någon NetWorker-kod och beskrivs i följande Microsoft-artikel: https://learn.microsoft.com/en-us/previous-versions/aa394323(v=vs.85)
Linux:
På Linux-servrar kan du använda verktyg som top för att övervaka systemresursanvändningen av processer. I denna KB kommer vi att gå igenom ett enkelt skalskript som kan köras till timestamp och visa CPU- och minnesanvändningen för en angiven process med hjälp av ett användardefinierat intervall.
1. Logga in på NetWorker-servern via SSH.
2. Växla till root:
sudo su -
3. Hämta PID för den NetWorker-process som du vill övervaka:
ps -ef | grep nsr
NetWorker-processer och portar
4. Skapa en .sh som innehåller följande:
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
Var:
PID = process-ID för den process du vill övervaka.
sleep 5 = Väntar 5 sekunder och går igen, du kan ändra detta intervall efter eget gottfinnande.
5. Gör skriptet körbart:
chmod +x process_monitor.sh
6. Kör skriptet:
./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. Låt skriptet köras under den tid du vill övervaka eller manuellt återskapa problemet där misstänkt överutnyttjande av resurser inträffar.
8. Om du vill stoppa skriptet använder du CTRL+C där du uppmanas att stoppa eller fortsätta skriptet.
. Skriptet skapar en utdatafil under /tmp med systemets värdnamn:
nve:~ # ls -l /tmp | grep monitor-pid
-rw------- 1 root root 2030 Jun 3 12:29 nve_monitor-pid.out
Innehållet i filen innehåller en tidsstämpel med processor- och minnesanvändningen för den process som anges i skriptet.
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): Så här kopierar du filer till/från en Linux NetWorker-server.