Descubra o que os processos do NFSD estão realmente fazendo?

1

Quando vejo o top em um de nossos servidores, há muitos processos do nfsd consumindo CPU:

PID   USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
2769  root      20   0     0    0    0 R   20  0.0   2073:14 nfsd
2774  root      20   0     0    0    0 S   19  0.0   2058:44 nfsd
2767  root      20   0     0    0    0 S   18  0.0   2092:54 nfsd
2768  root      20   0     0    0    0 S   18  0.0   2076:56 nfsd
2771  root      20   0     0    0    0 S   17  0.0   2094:25 nfsd
2773  root      20   0     0    0    0 S   14  0.0   2091:34 nfsd
2772  root      20   0     0    0    0 S   14  0.0   2083:43 nfsd
2770  root      20   0     0    0    0 S   12  0.0   2077:59 nfsd

Como descubro o que estão realmente fazendo ? Posso ver uma lista de arquivos sendo acessados por cada PID ou mais alguma informação?

Estamos em Ubuntu Server 12.04 .

Eu tentei nfsstat , mas não está me dando muitas informações úteis sobre o que realmente está acontecendo.

Editar - Itens adicionais tentados com base em comentários / respostas:

Fazer lsof -p 2774 em cada um dos PIDs mostra o seguinte:

COMMAND  PID USER   FD      TYPE DEVICE SIZE/OFF NODE NAME
nfsd    2774 root  cwd       DIR    8,1     4096    2 /
nfsd    2774 root  rtd       DIR    8,1     4096    2 /
nfsd    2774 root  txt   unknown                      /proc/2774/exe

Isso significa que nenhum arquivo está sendo acessado?

Quando tento ver um processo com strace -f -p 2774 , isso me causa este erro:

attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
Could not attach to process.  If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
again as the root user.  For more details, see /etc/sysctl.d/10-ptrace.conf

Um tcpdump | grep nfs está mostrando toneladas de atividade entre dois de nossos servidores, sobre o nfs, mas, até onde eu sei, eles não deveriam estar. Muitas entradas como:

13:56:41.120020 IP 192.168.0.20.nfs > 192.168.0.21.729: Flags [.], ack 4282288820, win 32833, options [nop,nop,TS val 627282027 ecr 263985319,nop,nop,sack 3 {4282317780:4282319228}{4282297508:4282298956}{4282290268:4282291716}], len
    
por BT643 19.11.2014 / 13:11

3 respostas

2

Nesse tipo de situação, muitas vezes achei muito útil capturar o tráfego NFS (por exemplo, com tcpdump ou Wireshark) e ver se há uma razão específica para a carga alta.

Por exemplo, você pode usar algo como:

tcpdump -w filename.cap "port 2049"

para salvar somente o tráfego NFS (estando na porta 2049) em um arquivo de captura, você pode abrir esse arquivo em um PC com o Wireshark e analisá-lo mais detalhadamente - a última vez que tive um problema semelhante, foi um monte de tarefas de computação do mesmo usuário que estava acima da cota de disco, e os clientes (18 máquinas diferentes) estavam tentando várias vezes escrever, elevando muito a carga no antigo servidor NFS.

    
por 19.11.2014 / 17:35
2

Algumas ferramentas para você:

  • lsof mostra as alças de arquivos abertos
  • iotop mostra as estatísticas de E / S processuais da melhor maneira
  • nethogs mostra o tráfego de rede por processo
  • strace permite que você veja o que um processo está fazendo
por 19.11.2014 / 13:23
0

Outra ferramenta útil é strace - ela mostrará todas as chamadas do sistema (acessos a arquivos, etc.) que um processo (e seus filhos bifurcados) está fazendo. Por exemplo:

[root @ localhost ~] # strace -f -p 2770

(mas espere um lote de saída)

    
por 19.11.2014 / 14:12