NetWorker: Solução de problemas de alto uso de memória ou CPU por processo
Summary: Este artigo da KB apresenta uma visão geral de como solucionar problemas de alto uso de memória e/ou CPU por um processo.
Instructions
Durante a solução de um problema relacionado ao NetWorker, pode ser determinado que um ou mais processos estão consumindo grandes quantidades de recursos de computação. Os comandos do sistema operacional, como o Top ou o Gerenciador de Tarefas do Windows, podem fornecer uma visão point-in-time do uso do sistema; No entanto, também podemos capturar o uso de recursos do sistema em uma determinada janela e compará-lo com outros registros do sistema.
Os logs e processos do NetWorker são detalhados em:
Este artigo da KB apresenta um método que usa as funções do sistema operacional e o registro em log.Abordagem sem script: NetWorker: Como solucionar problemas de um aparente travamento no NetWorker usando o utilitário nsrwatch.
Microsoft Windows:
Em sistemas Microsoft Windows, existem várias ferramentas gráficas, como o Gerenciador de Tarefas e o Monitor de Desempenho, que podem ser usadas para monitorar o uso de recursos por um processo específico. Neste artigo da KB, analisaremos um script em lote simples que pode ser executado com registro de data e hora e mostraremos o uso da CPU e da memória de um processo especificado usando um intervalo definido pelo usuário.
Primeiro devemos determinar qual processo deve ser monitorado. Isso pode variar dependendo do problema. Os processos e portas do NetWorker devem ajudar a restringir o nome dos processos e o que eles fazem.
Você pode identificar os processos no servidor do NetWorker usando:
- Gerenciador de tarefas.
- Lista de tarefas
- nsrrpcinfo -p localhost (requer servidor do NetWorker ou pacote de client estendido do NetWorker).
1. Crie um script .bat contendo o seguinte:
@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 = a ID do processo que você deseja monitorar.
INTERVAL_IN_SECONDS = o valor numérico que representa quantos segundos entre cada vez que o relatório é executado.
2. Salve o script como process-monitor.bat em um local de sua escolha.
3. Abra um prompt de comando de administrador e acesse o diretório em que o script foi salvo.
4. Execute o script.

Isso cria o arquivo process-monitor.out no diretório a partir do qual o script foi executado. O arquivo contém:
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
Onde:
LocalDateTime = A data e a hora são mostradas como YYYYMMDDHHMMSS.
IDProcess = o PID que foi inserido no script.
Nome = o nome do processo ao qual o PID está associado.
PercentProcessorTime = retorna o tempo decorrido que todos os threads desse processo usaram o processador para executar instruções em 100 nanossegundos.
PrivateBytes = número atual de bytes que esse processo alocou na memória que não pode ser compartilhada com outros processos.
5. Para interromper o script, use CTRL+C , onde você será solicitado a parar ou continuar o script.
Esses valores não fazem parte de nenhum código do NetWorker e são detalhados no seguinte artigo da Microsoft: https://learn.microsoft.com/en-us/previous-versions/aa394323(v=vs.85)
Linux:
Em servidores Linux, você pode usar ferramentas como top para monitorar o uso de recursos do sistema de processos. Neste artigo da KB, analisaremos um script de shell simples que pode ser executado com registro de data e hora e mostraremos o uso da CPU e da memória de um processo especificado usando um intervalo definido pelo usuário.
1. Faça login no servidor do NetWorker via SSH.
2. Alterne para root:
sudo su -
3. Obtenha o PID do processo do NetWorker que você deseja monitorar:
ps -ef | grep nsr
Processos e portas do NetWorker
4. Crie um .sh que contenha o seguinte:
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 = a ID do processo que você deseja monitorar.
Sono 5 = Espera 5 segundos e corre novamente, você pode alterar esse intervalo conforme seu critério.
5. Torne o script executável:
chmod +x process_monitor.sh
6. Execute o 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. Deixe o script em execução pelo tempo que você deseja monitorar ou reproduza manualmente o problema em que ocorre uma suspeita de superutilização do recurso.
8. Para interromper o script, use CTRL+C , onde você será solicitado a parar ou continuar o script.
. O script cria um arquivo de saída em /tmp com o nome de host do sistema:
nve:~ # ls -l /tmp | grep monitor-pid
-rw------- 1 root root 2030 Jun 3 12:29 nve_monitor-pid.out
O conteúdo do arquivo inclui um registro de data e hora com a utilização da CPU e da memória do processo especificado no 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): Como copiar arquivos de/para um servidor NetWorker no Linux.