¿Existe alguna forma de archivar la causa (o el archivo de destino) de las operaciones de escritura en disco en Linux (RHEL6.1)?

¿Existe alguna forma de archivar la causa (o el archivo de destino) de las operaciones de escritura en disco en Linux (RHEL6.1)?

Tengo una máquina virtual con una aplicación basada en PHP (en Apache), cuando observo la actividad del disco, hay una escritura constante de 170 kbps cuando Apache se está ejecutando.

Cuando aplicamos carga, el rendimiento del servidor depende de la CPU, pero esto parece estar directamente relacionado con saltos de E/S de escritura en disco de 20 a 30 veces. El gráfico de uso de CPU refleja el gráfico de acceso al disco de escritura.

¿Algunas ideas?

Respuesta1

Dos recomendaciones:

iotopes un programa útil que muestra el uso de E/S en tiempo real en un formato como el topcomando. Esto debería ayudarle a identificar el script/binario que realiza todas las E/S. Creo que es posible que esto ya esté instalado en kernels más nuevos, pero yum puede proporcionarlo en RHEL si no lo ve.

lsoftambién es útil para solucionar problemas de E/S; enumera los archivos abiertos.

ACTUALIZAR

Si hay actividad "constante" en el disco, entonces iotopdebería indicarle qué procesos son los culpables. Con respecto al historial de transacciones de E/S: no creo que el historial de E/S esté registrado en ninguna parte de la mayoría de las distribuciones de Linux, pero puedes agregar un trabajo cron.

Como root, abre crontab crontab -ey agrega estas dos líneas:

* * * * * /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

Eso se volca iotopy lsofse genera en un registro cada minuto. Agregue un script logrotate para cada uno para evitar que los archivos ocupen todo su espacio, por ejemplo:

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

Respuesta2

Parece que una tarea en segundo plano no relacionada estaba eliminando el contenido del directorio /tmp donde se estaba precompilando php. Como resultado, el proceso de precompilación de PHP comenzó nuevamente, lo que generó una actividad constante en el disco.

información relacionada