NetWorker: Troubleshooting High Memory or CPU usage by Process
Summary: Dit KB-artikel biedt een overzicht van het oplossen van problemen met hoog geheugen- en/of CPU-gebruik door een proces.
Instructions
Bij het oplossen van een probleem met betrekking tot NetWorker kan worden vastgesteld dat een of meer processen grote hoeveelheden rekenbronnen verbruiken. Besturingssysteemopdrachten zoals Top of Windows Taakbeheer kunnen een point-in-time inzicht geven in het systeemgebruik; We kunnen echter ook het gebruik van systeembronnen in een bepaald venster vastleggen en dat vergelijken met andere systeemlogboeken.
De logboeken en processen van NetWorker worden beschreven onder:
Dit KB-artikel bevat een methode voor het gebruik van besturingssysteemfuncties en logboekregistratie.Niet-gescripte aanpak: NetWorker: Problemen oplossen met een schijnbare vastloper in NetWorker met behulp van het hulpprogramma nsrwatch.
Microsoft Windows:
Op Microsoft Windows-systemen zijn er verschillende grafische hulpprogramma's, zoals Taakbeheer en Prestatiemeter, die kunnen worden gebruikt om het resourcegebruik volgens een specifiek proces te controleren. In deze KB bespreken we een eenvoudig batchscript dat kan worden uitgevoerd om de tijdstempel te verlengen en het CPU- en geheugengebruik van een bepaald proces weer te geven met behulp van een door de gebruiker gedefinieerd interval.
Eerst moeten we bepalen welk proces bewaakt moet worden. Dit kan variëren afhankelijk van het probleem. De NetWorker-processen en -poorten moeten helpen bij het verfijnen van de naam van de processen en wat ze doen.
U kunt de processen op de NetWorker-server identificeren met behulp van:
- Taakbeheer.
- Takenlijst
- nsrrpcinfo -p localhost (Vereist NetWorker server of NetWorker Extended Client pakket).
1. Maak een .bat script met daarin het volgende:
@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
Waarbij:
PID = de proces-ID van het proces dat u wilt monitoren.
INTERVAL_IN_SECONDS = de numerieke waarde die aangeeft hoeveel seconden er zitten tussen elke keer dat het rapport wordt uitgevoerd.
2. Sla het script op process-monitor.bat op een locatie naar keuze.
3. Open een Administrator-opdrachtprompt en cd naar de map waar het script is opgeslagen.
4. Voer het script uit.

Hiermee wordt het bestand process-monitor.out gemaakt in de map van waaruit het script is uitgevoerd. Het bestand bevat:
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
Waarbij:
LocalDateTime = Wordt de datum en tijd weergegeven als YYYYMMDDHHMMSS.
IDProcess = de PID die in het script is ingevoerd.
Name = de naam van het proces waaraan de PID is gekoppeld.
PercentProcessorTime = Retourneert de verstreken tijd dat alle threads van dit proces de processor hebben gebruikt om instructies uit te voeren in 100 nanoseconden.
PrivateBytes = Huidig aantal bytes dat dit proces in het geheugen heeft toegewezen en dat niet kan worden gedeeld met andere processen.
5. Als u het script wilt stoppen, gebruikt u CTRL+C , waarbij u wordt gevraagd om het script te stoppen of door te gaan.
Deze waarden maken geen deel uit van NetWorker-code en worden beschreven in het volgende Microsoft-artikel: https://learn.microsoft.com/en-us/previous-versions/aa394323(v=vs.85)
Linux:
Op Linux-servers kunt u tools zoals top gebruiken om het gebruik van systeembronnen van processen te bewaken. In deze KB gaan we een eenvoudig shellscript doornemen dat kan worden uitgevoerd om het CPU- en geheugengebruik van een bepaald proces te timestampen en weer te geven met behulp van een door de gebruiker gedefinieerd interval.
1. Meld u aan bij de NetWorker-server via SSH.
2. Overschakelen naar root:
sudo su -
3. Haal de PID op van het NetWorker-proces dat u wilt controleren:
ps -ef | grep nsr
NetWorker-processen en -poorten
4. Maak een .sh met het volgende:
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
Waarbij:
PID = de proces-ID van het proces dat u wilt monitoren.
slaap 5 = Wacht 5 seconden en loopt opnieuw, u kunt dit interval naar eigen goeddunken wijzigen.
5. Maak het script uitvoerbaar:
chmod +x process_monitor.sh
6. Voer het script uit:
./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. Laat het script actief voor de duur dat u het probleem wilt controleren of reproduceren waarbij vermoedelijke overbenutting van bronnen optreedt.
8. Als u het script wilt stoppen, gebruikt u CTRL+C , waarbij u wordt gevraagd om het script te stoppen of door te gaan.
. Het script maakt een uitvoerbestand aan onder /tmp met de hostnaam van het systeem:
nve:~ # ls -l /tmp | grep monitor-pid
-rw------- 1 root root 2030 Jun 3 12:29 nve_monitor-pid.out
De inhoud van het bestand bevat een tijdstempel met de CPU en geheugengebruik van het proces dat in het script is opgegeven.
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): Bestanden kopiëren van/naar een Linux NetWorker server.