Existe uma maneira de registrar a causa (ou arquivo de destino) das operações de gravação em disco no Linux (RHEL6.1)?

Existe uma maneira de registrar a causa (ou arquivo de destino) das operações de gravação em disco no Linux (RHEL6.1)?

Eu tenho uma máquina virtual com um aplicativo baseado em php (no Apache). Ao observar a atividade do disco, há uma gravação constante de 170 kbps quando o Apache está em execução.

Quando aplicamos carga, o desempenho do servidor é limitado pela CPU, mas isso parece estar diretamente relacionado aos saltos de E/S de gravação em disco de 20 a 30x. O gráfico de uso da CPU reflete o gráfico de acesso ao disco de gravação.

Alguma ideia?

Responder1

Duas recomendações:

iotopé um programa útil que mostra o uso de E/S em tempo real em um formato como o topcomando. Isso deve ajudá-lo a identificar o script/binário que está realizando toda a E/S. Acho que isso já pode estar instalado em kernels mais recentes, mas o yum pode fornecê-lo no RHEL se você não o encontrar.

lsoftambém é útil na solução de problemas de E/S; ele lista todos os arquivos abertos.

ATUALIZAR

Se houver atividade de disco "constante", iotopvocê deverá informar quais processos são os culpados. Em relação ao histórico de transações de E/S: não acredito que o histórico de E/S esteja registrado em qualquer lugar na maioria das distribuições Linux, mas você pode adicionar um cron job.

Como root, abra o crontab crontab -ee adicione estas duas linhas:

* * * * * /bin/date >> /var/log/iotop; /usr/local/bin/iotop -bot --iter=3 -q >> /var/log/iotop
* * * * * /bin/date >> /var/log/lsof; /usr/bin/lsof -b -w >> /var/log/lsof

Isso despeja iotope lsofgera um log a cada minuto. Adicione um script logrotate para cada um para evitar que os arquivos ocupem todo o seu espaço, por exemplo:

someuser@myhost:~> cat /etc/logrotate.d/lsof
/var/log/lsof {
  rotate 3
  weekly
  compress
  missingok
  notifempty
}

Responder2

Parece que uma tarefa em segundo plano não relacionada estava excluindo o conteúdo do diretório /tmp onde o php estava sendo pré-compilado. Como resultado, o processo de pré-compilação do php foi iniciado novamente, resultando em atividade constante do disco.

informação relacionada