NetWorker: Rozwiązywanie problemów z wysokim użyciem pamięci lub procesora według procesów
Summary: Ten artykuł bazy wiedzy zawiera omówienie sposobów rozwiązywania problemów z wysokim użyciem pamięci i/lub procesora przez proces.
Instructions
Podczas rozwiązywania problemu związanego z NetWorker można stwierdzić, że jeden lub więcej procesów zużywa duże ilości zasobów obliczeniowych. Polecenia systemu operacyjnego, takie jak top lub Windows Task Manager, mogą zapewniać wgląd w użycie systemu z określonego punktu w czasie; Możemy jednak również rejestrować wykorzystanie zasobów systemowych w danym oknie i porównywać je z innymi dziennikami systemowymi.
Dzienniki i procesy NetWorker są szczegółowo opisane w sekcji:
Ten artykuł bazy wiedzy zawiera metodę korzystania z funkcji systemu operacyjnego i rejestrowania.Podejście nieskryptowe: NetWorker: Jak rozwiązać problem z widocznym zawieszeniem w NetWorker za pomocą narzędzia nsrwatch.
Microsoft Windows:
W systemach Microsoft Windows dostępnych jest kilka narzędzi graficznych, takich jak Menedżer zadań i Monitor wydajności, które umożliwiają monitorowanie wykorzystania zasobów przez określony proces. W tym artykule bazy wiedzy omówimy prosty skrypt wsadowy, który można uruchomić z sygnaturą czasową i pokazać użycie procesora i pamięci przez określony proces w interwale zdefiniowanym przez użytkownika.
Najpierw musimy określić, jaki proces musi być monitorowany. Może się to różnić w zależności od problemu. Procesy i porty NetWorker powinny pomóc zawęzić nazwy procesów i ich działania.
Procesy na serwerze NetWorker można zidentyfikować za pomocą:
- Menedżer zadań.
- Lista zadań
- nsrrpcinfo -p localhost (wymaga serwera NetWorker lub rozszerzonego pakietu klienckiego NetWorker).
1. Utwórz skrypt .bat zawierający następujące elementy:
@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
Gdzie:
PID = Identyfikator procesu, który chcesz monitorować.
INTERVAL_IN_SECONDS = wartość liczbowa, która określa, ile sekund upłynęło między kolejnymi uruchomieniami raportu.
2. Zapisz skrypt jako process-monitor.bat w wybranej lokalizacji.
3. Otwórz wiersz poleceń administratora i przejdź do katalogu, w którym zapisano skrypt.
4. Uruchom skrypt.

Spowoduje to utworzenie pliku process-monitor.out w katalogu, z którego został uruchomiony skrypt. Plik zawiera:
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
Gdzie:
LocalDateTime = Czy data i godzina są wyświetlane jako RRRRMMDDHHMMSS.
IDProcess = identyfikator PID wprowadzony do skryptu.
Nazwa = nazwa procesu, z którym powiązany jest PID.
PercentProcessorTime = Zwraca czas, w którym wszystkie wątki tego procesu używały procesora do wykonywania instrukcji w ciągu 100 nanosekund.
PrivateBytes = Bieżąca liczba bajtów przydzielonych przez ten proces w pamięci, która nie może być współużytkowana z innymi procesami.
5. Aby zatrzymać skrypt, użyj kombinacji CTRL+C , gdzie zostanie wyświetlony monit o zatrzymanie lub kontynuowanie skryptu.
Wartości te nie są częścią żadnego kodu NetWorker i zostały szczegółowo opisane w następującym artykule firmy Microsoft: https://learn.microsoft.com/en-us/previous-versions/aa394323(v=vs.85)
Linux:
Na serwerach Linux możesz używać narzędzi takich jak top do monitorowania wykorzystania zasobów systemowych przez procesy. W tej bazie wiedzy omówimy prosty skrypt powłoki, który można uruchomić do znacznika czasu i pokazać użycie procesora i pamięci przez określony proces w interwale zdefiniowanym przez użytkownika.
1. Zaloguj się do serwera NetWorker za pomocą SSH.
2. Przełącz się do katalogu głównego:
sudo su -
3. Uzyskaj identyfikator PID procesu NetWorker, który chcesz monitorować:
ps -ef | grep nsr
4. Utwórz .sh zawierający następujące elementy:
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
Gdzie:
PID = Identyfikator procesu, który chcesz monitorować.
sleep 5 = Czeka 5 sekund i uruchamia się ponownie, możesz zmienić ten interwał według własnego uznania.
5. Utwórz plik wykonywalny skryptu:
chmod +x process_monitor.sh
6. Uruchom skrypt:
./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. Pozostaw skrypt uruchomiony przez czas, który chcesz monitorować, lub ręcznie odtwórz problem, w którym występuje podejrzane nadmierne wykorzystanie zasobów.
8. Aby zatrzymać skrypt, użyj kombinacji CTRL+C , gdzie zostanie wyświetlony monit o zatrzymanie lub kontynuowanie skryptu.
. Skrypt tworzy plik wyjściowy w katalogu /tmp z nazwą hosta systemowego:
nve:~ # ls -l /tmp | grep monitor-pid
-rw------- 1 root root 2030 Jun 3 12:29 nve_monitor-pid.out
Zawartość pliku zawiera sygnaturę czasową z wykorzystaniem procesora i pamięci procesu określonego w skrypcie.
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): Kopiowanie plików do/z serwera Linux NetWorker.