NetWorker: Fehlerbehebung bei hoher Speicher- oder CPU-Auslastung nach Prozess
Summary: Dieser Wissensdatenbank-Artikel bietet eine Übersicht über das Troubleshooting bei hoher Arbeitsspeicher- und/oder CPU-Auslastung durch einen Prozess.
Instructions
Beim Troubleshooting eines NetWorker-bezogenen Problems kann festgestellt werden, dass einer oder mehrere Prozesse große Mengen an Compute-Ressourcen verbrauchen. Betriebssystembefehle wie "top Manager" oder "Windows Task-Manager" können einen Point-in-Time-Einblick in die Systemnutzung geben. Wir können aber auch die Nutzung von Systemressourcen in einem bestimmten Zeitfenster erfassen und mit anderen Systemprotokollen vergleichen.
NetWorker-Protokolle und -Prozesse werden detailliert beschrieben unter:
Dieser Wissensdatenbank-Artikel beschreibt eine Methode zur Verwendung von Betriebssystemfunktionen und Protokollierung.Nicht-skriptbasierter Ansatz: NetWorker: Anleitung zum Troubleshooting eines offensichtlichen Absturzes in NetWorker mithilfe des Dienstprogramms nsrwatch.
Microsoft Windows:
Auf Microsoft Windows-Systemen gibt es verschiedene grafische Tools wie den Task-Manager und den Performancemonitor, mit denen die Ressourcennutzung durch einen bestimmten Prozess überwacht werden kann. In diesem Wissensdatenbank-Artikel werden wir ein einfaches Batchskript vorstellen, das mit einem Zeitstempel ausgeführt werden kann und die CPU- und Speicherauslastung eines bestimmten Prozesses mit einem benutzerdefinierten Intervall anzeigt.
Zuerst müssen wir festlegen, welcher Prozess überwacht werden muss. Dies kann je nach Problem variieren. Die NetWorker-Prozesse und -Ports sollen dabei helfen, den Namen der Prozesse und ihre Aufgaben einzugrenzen.
Sie können die Prozesse auf dem NetWorker-Server wie folgt identifizieren:
- Task-Manager.
- Aufgabenliste
- nsrrpcinfo -p localhost (erfordert ein erweitertes NetWorker-Server- oder NetWorker-Clientpaket).
1. Erstellen Sie ein .bat Skript, das Folgendes enthält:
@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
Dabei gilt:
PID = Prozess-ID des zu überwachenden Prozesses.
INTERVAL_IN_SECONDS = der numerische Wert, der angibt, wie viele Sekunden zwischen den einzelnen Ausführungen des Berichts liegen.
2. Speichern Sie das Skript als process-monitor.bat an einem Speicherort Ihrer Wahl.
3. Öffnen Sie eine Administrator-Eingabeaufforderung und wechseln Sie mit cd zu dem Verzeichnis, in dem das Skript gespeichert wurde.
4. Führen Sie das Skript aus.

Dadurch wird die Datei process-monitor.out in dem Verzeichnis erstellt, in dem das Skript ausgeführt wurde. Die Datei enthält:
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
Wo:
LocalDateTime = Datum und Uhrzeit werden als JJJJMMTTDHHMMSS angezeigt.
IDProcess = die PID, die in das Skript eingegeben wurde.
Name = Name des Prozesses, mit dem die PID verknüpft ist.
PercentProcessorTime = Gibt die verstrichene Zeit zurück, die alle Threads dieses Prozesses den Prozessor verwendet haben, um Anweisungen in 100 Nanosekunden auszuführen.
PrivateBytes = Aktuelle Anzahl von Byte, die dieser Prozess im Arbeitsspeicher zugewiesen hat und die nicht mit anderen Prozessen geteilt werden können.
5. Um das Skript zu beenden, verwenden Sie STRG+C , wo Sie aufgefordert werden, das Skript zu beenden oder fortzusetzen.
Diese Werte sind nicht Teil eines NetWorker-Codes und werden im folgenden Microsoft-Artikel ausführlich beschrieben: https://learn.microsoft.com/en-us/previous-versions/aa394323(v=vs.85)
Linux:
Auf Linux-Servern können Sie Tools wie top verwenden, um die Nutzung von Systemressourcen von Prozessen zu überwachen. In diesem Wissensdatenbank-Artikel werden wir ein einfaches Shell-Skript vorstellen, das ausgeführt werden kann, um timestamp zu erstellen und die CPU- und Speicherauslastung eines bestimmten Prozesses mit einem benutzerdefinierten Intervall anzuzeigen.
1. Melden Sie sich über SSH beim NetWorker-Server an.
2. Wechseln Sie zum Root-Nutzer:
sudo su -
3. Rufen Sie die PID des NetWorker-Prozesses ab, den Sie überwachen möchten:
ps -ef | grep nsr
4. Erstellen Sie eine .sh mit folgenden Elementen:
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
Dabei gilt:
PID = Prozess-ID des zu überwachenden Prozesses.
sleep 5 = Wartet 5 Sekunden und wird erneut ausgeführt, Sie können dieses Intervall nach eigenem Ermessen ändern.
5. Machen Sie das Skript ausführbar:
chmod +x process_monitor.sh
6. Führen Sie das Skript aus:
./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. Lassen Sie das Skript für den Zeitraum ausführen, für den Sie es überwachen möchten, oder reproduzieren Sie das Problem manuell, wenn eine vermutete Überauslastung der Ressource auftritt.
8. Um das Skript zu beenden, verwenden Sie STRG+C , wo Sie aufgefordert werden, das Skript zu beenden oder fortzusetzen.
beenden. Das Skript erstellt eine Ausgabedatei unter /tmp mit dem Hostnamen des Systems:
nve:~ # ls -l /tmp | grep monitor-pid
-rw------- 1 root root 2030 Jun 3 12:29 nve_monitor-pid.out
Der Inhalt der Datei enthält einen Zeitstempel mit der CPU- und Arbeitsspeicherauslastung des im Skript angegebenen Prozesses.
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): Kopieren von Dateien zu/von einem Linux NetWorker-Server.