NetWorker: Risoluzione dei problemi relativi all'utilizzo elevato di memoria o CPU per processo
Summary: Questo articolo della Knowledge Base fornisce una panoramica su come risolvere i problemi relativi all'utilizzo elevato di memoria e/o CPU da parte di un processo.
Instructions
Durante la risoluzione di un problema correlato a NetWorker, è possibile determinare che uno o più processi utilizzano grandi quantità di risorse di elaborazione. I comandi del sistema operativo, ad esempio Gestione attività di Windows o superiore, possono fornire una panoramica point-in-time dell'utilizzo del sistema; Tuttavia, è anche possibile acquisire l'utilizzo delle risorse di sistema in una determinata finestra e confrontarlo con altri registri di sistema.
I registri e i processi di NetWorker sono descritti in dettaglio in:
Questo articolo della Knowledge Base fornisce un metodo che utilizza le funzioni e la registrazione del sistema operativo.Approccio senza script: NetWorker: Come risolvere un blocco apparente in NetWorker utilizzando l'utilità nsrwatch.
Microsoft Windows:
Nei sistemi Microsoft Windows sono disponibili diversi strumenti grafici, come Gestione attività e Monitoraggio prestazioni, che possono essere utilizzati per monitorare l'utilizzo delle risorse da parte di un processo specifico. In questo articolo della KB verrà illustrato un semplice script batch che può essere eseguito in timestamp e che mostra l'utilizzo della CPU e della memoria di un processo specificato utilizzando un intervallo definito dall'utente.
Per prima cosa dobbiamo determinare quale processo deve essere monitorato. Questo può variare a seconda del problema. Le funzioni Processi e porte di NetWorker consentono di restringere il campo dei nomi dei processi e della relativa funzione.
È possibile identificare i processi sul server NetWorker utilizzando:
- Gestione attività.
- Elenco attività
- nsrrpcinfo -p localhost (richiede il server NetWorker o il pacchetto client esteso NetWorker).
1. Creare uno script .bat contenente quanto segue:
@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
Dove:
PID = ID processo del processo che si desidera monitorare.
INTERVAL_IN_SECONDS = valore numerico che rappresenta il numero di secondi tra l'esecuzione del report.
2. Salvare lo script come process-monitor.bat in una posizione a scelta.
3. Aprire un prompt dei comandi dell'amministratore e utilizzare cd per accedere alla directory in cui è stato salvato lo script.
4. Eseguire lo script.

In questo modo viene creato il file process-monitor.out nella directory da cui è stato eseguito lo script. Il file contiene:
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
Dove:
LocalDateTime = La data e l'ora vengono visualizzate come AAAAMMGGHHMMSS.
IDProcess = PID immesso nello script.
Name = nome del processo a cui è associato il PID.
PercentProcessorTime = Restituisce il tempo trascorso in cui tutti i thread di questo processo hanno utilizzato il processore per eseguire le istruzioni in 100 nanosecondi.
PrivateBytes = numero corrente di byte allocati da questo processo in memoria che non possono essere condivisi con altri processi.
5. Per arrestare lo script, utilizzare CTRL+C per indicare se viene richiesto di arrestare o continuare.
Questi valori non fanno parte di alcun codice NetWorker e sono descritti in dettaglio nel seguente articolo Microsoft: https://learn.microsoft.com/en-us/previous-versions/aa394323(v=vs.85)
Linux:
Sui server Linux è possibile utilizzare strumenti come top per monitorare l'utilizzo delle risorse di sistema dei processi. In questo articolo della KB esamineremo un semplice script di shell che può essere eseguito in timestamp e mostrerà l'utilizzo della CPU e della memoria di un processo specificato utilizzando un intervallo definito dall'utente.
1. Accedere al server NetWorker tramite SSH.
2. Passare a root:
sudo su -
3. Ottenere il PID del processo NetWorker che si desidera monitorare:
ps -ef | grep nsr
4. Creare un .sh contenente quanto segue:
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
Dove:
PID = ID processo del processo che si desidera monitorare.
sleep 5 = Aspetta 5 secondi e viene eseguito di nuovo, è possibile modificare questo intervallo a propria discrezione.
5. Rendere eseguibile lo script:
chmod +x process_monitor.sh
6. Eseguire lo script:
./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. Lasciare lo script in esecuzione per la durata desiderata o riprodurre manualmente il problema in cui si verifica un sospetto di utilizzo eccessivo delle risorse.
8. Per arrestare lo script, utilizzare CTRL+C per indicare se viene richiesto di arrestare o continuare.
. Lo script crea un file di output in /tmp con il nome host del sistema:
nve:~ # ls -l /tmp | grep monitor-pid
-rw------- 1 root root 2030 Jun 3 12:29 nve_monitor-pid.out
Il contenuto del file include un timestamp con l'utilizzo della CPU e della memoria del processo specificato nello script.
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): Come copiare file da/verso un server NetWorker Linux.