NetWorker: 프로세스별 높은 메모리 또는 CPU 사용량 문제 해결
Summary: 이 KB는 프로세스에서 높은 메모리 및/또는 CPU 사용량 문제를 해결하는 방법에 대한 개요를 제공합니다.
Instructions
NetWorker 관련 문제를 해결하는 동안 하나 이상의 프로세스가 많은 양의 컴퓨팅 리소스를 사용하고 있음을 확인할 수 있습니다. top 또는 Windows 작업 관리자와 같은 운영 체제 명령은 시스템 사용량에 대한 특정 시점 인사이트를 제공할 수 있습니다. 그러나 지정된 기간 동안 시스템 리소스 사용량을 캡처하여 다른 시스템 로그와 비교할 수도 있습니다.
NetWorker 로그 및 프로세스는 아래에 자세히 설명되어 있습니다.
이 KB는 운영 체제 기능 및 로깅을 사용하는 방법을 제공합니다.스크립팅되지 않은 접근 방식: NetWorker: nsrwatch 유틸리티를 사용하여 NetWorker의 명백한 중단 문제를 해결하는 방법
Microsoft Windows:
Microsoft Windows 시스템에는 특정 프로세스별 리소스 사용량을 모니터링하는 데 사용할 수 있는 작업 관리자 및 성능 모니터 와 같은 몇 가지 그래픽 도구가 있습니다. 이 KB에서는 타임스탬프에 실행할 수 있는 간단한 배치 스크립트를 살펴보고 사용자 정의 간격을 사용하여 지정된 프로세스의 CPU 및 메모리 사용량을 표시합니다.
먼저 모니터링해야 하는 프로세스를 결정해야 합니다. 이는 문제에 따라 다를 수 있습니다. NetWorker 프로세스 및 포트는 프로세스 이름과 해당 기능이 수행하는 작업의 범위를 좁히는 데 도움이 됩니다.
다음을 사용하여 NetWorker Server의 프로세스를 식별할 수 있습니다.
- 작업 관리자.
- 작업 목록
- nsrrpcinfo -p localhost (NetWorker Server 또는 NetWorker 확장 클라이언트 패키지 필요)
1. 다음을 포함하는 .bat 스크립트를 생성합니다.
@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
Where:
PID = 모니터링할 프로세스의 프로세스 ID입니다.
INTERVAL_IN_SECONDS = 보고서가 실행될 때마다 시간(초)을 나타내는 숫자 값입니다.
2. 선택한 위치에 스크립트를 process-monitor.bat 로 저장합니다.
3. 관리자 명령 프롬프트를 열고 스크립트가 저장된 디렉토리로 이동합니다 .
4. 스크립트를 실행합니다.

그러면 스크립트가 실행된 디렉토리에 process-monitor.out 파일이 생성됩니다. 파일에는 다음이 포함됩니다.
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
여기서:
LocalDateTime = YYYYMMDDHHMMSS로 표시된 날짜 및 시간입니다.
IDProcess = 스크립트에 입력된 PID입니다.
이름 = PID가 연결된 프로세스의 이름입니다.
PercentProcessorTime = 이 프로세스의 모든 스레드가 프로세서를 사용하여 100나노초 내에 명령을 실행한 경과 시간을 반환합니다.
PrivateBytes = 이 프로세스가 다른 프로세스와 공유할 수 없는 메모리에 할당한 현재 바이트 수입니다.
5. 스크립트를 중지하려면 Ctrl+C 를 사용하여 스크립트를 중지하거나 계속하라는 메시지가 표시됩니다.
이러한 값은 NetWorker 코드의 일부가 아니며 Microsoft 문서 https://learn.microsoft.com/en-us/previous-versions/aa394323(v=vs.85)에 자세히 설명되어 있습니다.
Linux:
Linux 서버에서는 top 과 같은 도구를 사용하여 프로세스의 시스템 리소스 사용량을 모니터링할 수 있습니다. 이 KB에서는 타임 스탬프에 실행할 수 있는 간단한 셸 스크립트를 살펴보고 사용자 정의 간격을 사용하여 지정된 프로세스의 CPU 및 메모리 사용량을 표시합니다.
1. SSH를 통해 NetWorker 서버에 로그인합니다.
2. 루트로 전환합니다.
sudo su -
3. 모니터링할 NetWorker 프로세스의 PID를 가져옵니다.
ps -ef | grep nsr
4. 다음을 포함하는 .sh 생성합니다.
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
Where:
PID = 모니터링할 프로세스의 프로세스 ID입니다.
sleep 5 = 5초 동안 기다렸다가 다시 실행되며, 재량에 따라 이 간격을 변경할 수 있습니다.
5. 스크립트를 실행 파일로 만듭니다.
chmod +x process_monitor.sh
6. 다음 스크립트를 실행합니다.
./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. 리소스 활용도 초과가 의심되는 경우 모니터링하거나 수동으로 재현하려는 기간 동안 스크립트를 계속 실행합니다.
8. 스크립트를 중지하려면 Ctrl+C 를 사용하여 스크립트를 중지하거나 계속하라는 메시지가 표시됩니다.
를 사용하여 중지해야 합니다. 스크립트는 시스템 호스트 이름을 사용하여 /tmp 아래에 출력 파일을 생성합니다.
nve:~ # ls -l /tmp | grep monitor-pid
-rw------- 1 root root 2030 Jun 3 12:29 nve_monitor-pid.out
파일 내용에는 스크립트에 지정된 프로세스의 CPU 및 메모리 사용률이 있는 타임스탬프가 포함됩니다.
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