NetWorker: Fejlfinding af højt hukommelses- eller CPU-forbrug efter proces
Summary: Denne KB giver et overblik over, hvordan du foretager fejlfinding af højt hukommelses- og/eller CPU-forbrug i en proces.
Instructions
Under fejlfinding af et NetWorker-relateret problem kan det konstateres, at en eller flere processer bruger store mængder beregningsressourcer. Top - eller Windows Task Manager-kommandoer kan give et tidsbestemt indblik i systembrugen. Vi kan dog også registrere systemressourceforbruget i et givet vindue og sammenligne det med andre systemlogfiler.
NetWorker-logfiler og -processer er beskrevet under:
Denne KB indeholder en metode, der bruger operativsystemets funktioner og logføring.Tilgang uden manuskript: NetWorker: Sådan foretages fejlfinding af en tilsyneladende hængning i NetWorker ved hjælp af hjælpeprogrammet nsrwatch.
Microsoft Windows:
På Microsoft Windows-systemer er der flere grafiske værktøjer såsom Task Manager og Performance Monitor, som kan bruges til at overvåge ressourceforbruget ved en bestemt proces. I denne KB gennemgår vi et simpelt batchscript, som kan køres til tidsstempel og vise CPU- og hukommelsesforbruget for en bestemt proces ved hjælp af et brugerdefineret interval.
Først skal vi bestemme, hvilken proces der skal overvåges. Dette kan variere afhængigt af problemet. NetWorker-processerne og -portene skal hjælpe med at indsnævre navnet på processerne, og hvad de gør.
Du kan identificere processerne på NetWorker-serveren ved hjælp af:
- Jobliste.
- Opgaveliste
- nsrrpcinfo -p localhost (kræver NetWorker-server eller NetWorker-udvidet klientpakke).
1. Opret et .bat script, der indeholder følgende:
@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
Hvor:
PID = proces-id'et for den proces, du vil overvåge.
INTERVAL_IN_SECONDS = den numeriske værdi, der repræsenterer, hvor mange sekunder der er mellem hver gang rapporten køres.
2. Gem scriptet som process-monitor.bat på en placering efter eget valg.
3. Åbn en administratorkommandoprompt, og skriv cd til den mappe, hvor scriptet blev gemt.
4. Kør scriptet.

Dette opretter filen process-monitor.out i den mappe, hvorfra scriptet blev kørt. Filen indeholder:
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
Hvor:
LocalDateTime = Er den dato og det klokkeslæt, der vises som ÅÅÅÅMMDDHHMMS.
IDProcess = PID'en, der blev indtastet i scriptet.
Navn = navnet på den proces, PID er tilknyttet.
PercentProcessorTime = Returnerer forløbet tid, hvor alle trådene i denne proces brugte processoren til at udføre instruktioner på 100 nanosekunder.
PrivateBytes = Aktuelt antal bytes, som denne proces har allokeret i hukommelsen, som ikke kan deles med andre processer.
5. Hvis du vil stoppe scriptet, skal du bruge CTRL+C , hvor du bliver bedt om at stoppe eller fortsætte scriptet.
Disse værdier er ikke en del af nogen NetWorker-kode og er beskrevet i følgende Microsoft-artikel: https://learn.microsoft.com/en-us/previous-versions/aa394323(v=vs.85)
Linux:
På Linux-servere kan du bruge værktøjer som top til at overvåge systemressourceforbruget af processer. I denne KB gennemgår vi et simpelt shell-script, som kan køres til tidsstempel og vise CPU- og hukommelsesforbruget for en bestemt proces ved hjælp af et brugerdefineret interval.
1. Log på NetWorker-serveren via SSH.
2. Skift til rod:
sudo su -
3. Hent PID for NetWorker-processen, som du vil overvåge:
ps -ef | grep nsr
4. Opret en .sh, der indeholder følgende:
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
Hvor:
PID = proces-id'et for den proces, du vil overvåge.
søvn 5 = Venter 5 sekunder og kører igen, kan du ændre dette interval efter eget skøn.
5. Gør scriptet eksekverbart:
chmod +x process_monitor.sh
6. Kør scriptet:
./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. Lad scriptet køre i den varighed, du vil overvåge eller manuelt genskabe problemet, hvor der opstår mistanke om overudnyttelse af ressourcer.
8. Hvis du vil stoppe scriptet, skal du bruge CTRL+C , hvor du bliver bedt om at stoppe eller fortsætte scriptet.
. Scriptet opretter en outputfil under /tmp med systemets værtsnavn:
nve:~ # ls -l /tmp | grep monitor-pid
-rw------- 1 root root 2030 Jun 3 12:29 nve_monitor-pid.out
Indholdet af filen omfatter et tidsstempel med CPU og mem udnyttelse af den proces, der er angivet i scriptet.
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ådan kopierer du filer til/fra en Linux NetWorker-server.