Ubicación del problema en línea ------ cuello de botella del disco

Verifique el espacio en disco

Verifique el espacio restante en el disco

Vea el df -hlcomando de uso de espacio en disco restante :

[root@localhost ~]# df -hl
文件系统                       容量  已用  可用 已用% 挂载点
devtmpfs                       678M     0  678M    0% /dev
tmpfs                          695M     0  695M    0% /dev/shm
tmpfs                          695M   28M  667M    4% /run
tmpfs                          695M     0  695M    0% /sys/fs/cgroup
/dev/mapper/centos_aubin-root   27G  5.6G   22G   21% /
/dev/sda1                     1014M  211M  804M   21% /boot

Ver el espacio utilizado en el disco

du -shEl comando es para ver el espacio utilizado del disco. El "espacio de disco utilizado" aquí significa el espacio utilizado por toda la jerarquía de archivos bajo el archivo especificado. Si no se proporcionan parámetros, duinforme el espacio utilizado del espacio de disco del directorio actual. De hecho, es para mostrar el espacio en disco ocupado por archivos o directorios  :

[root@localhost ~]# du -sh
64K
  • -h: Muestra el uso de la partición del sistema de archivos, por ejemplo: 10 KB, 10 MB, 10 GB, etc.

  • -s: Muestra el tamaño del archivo o el directorio completo, la unidad predeterminada es KB.

duLa información detallada se puede man duver a través de  .

Ver las condiciones de lectura y escritura del disco

Ver las condiciones generales de lectura y escritura del disco

A través de iostatpara ver la situación general de lectura y escritura del disco:

[root@localhost ~]# iostat
Linux 3.10.0-1062.el7.x86_64 (localhost.localdomain)    2020年05月02日  _x86_64_        (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.17    0.00    0.20    0.46    0.00   99.17

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.56        30.45        39.61    4659620    6060644
scd0              0.00         0.02         0.00       3102          0
dm-0              1.96        30.01        38.42    4591998    5878155
dm-1              0.09         0.09         0.30      13840      45328
  • tps: El número de transmisiones por segundo del dispositivo.

  • kB_read/s: La cantidad de datos leídos desde el dispositivo (unidad expresada) por segundo;

  • kB_wrtn/s: La cantidad de datos escritos en el dispositivo (unidad expresada) por segundo;

  • kB_read: La cantidad total de datos leídos;

  • kB_wrtn: La cantidad total de datos escritos;

Ver condiciones detalladas de lectura y escritura del disco

A través de iostat -x 1 3puede ver la lectura y escritura del disco en detalle, hay 3 salidas en total sin salida cada segundo. Cuando vea que el tiempo de espera de E / S representa una alta proporción del tiempo de CPU, lo primero que debe verificar es si la máquina se está utilizando en una gran cantidad. Intercambie espacio y preste atención a iowaitsi el consumo de la CPU es grande. Si es grande, significa que el disco tiene un gran cuello de botella. Al mismo tiempo, preste atención a awaitlos El tiempo de respuesta del disco debe ser inferior a 5 ms:

[root@localhost ~]# iostat -x 1 3
Linux 3.10.0-1062.el7.x86_64 (localhost.localdomain)    2020年05月02日  _x86_64_        (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.17    0.00    0.20    0.46    0.00   99.16

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.01     0.49    0.63    0.95    30.59    39.78    89.58     0.34  214.23   49.16  323.48   8.55   1.34
scd0              0.00     0.00    0.00    0.00     0.02     0.00    98.48     0.00    1.21    1.21    0.00   0.95   0.00
dm-0              0.00     0.00    0.62    1.35    30.15    38.59    69.70     0.91  460.67   49.12  648.54   6.66   1.31
dm-1              0.00     0.00    0.02    0.07     0.09     0.30     8.52     0.04  442.74   95.43  521.17   6.91   0.06

avg-cpuIndica las estadísticas generales de uso de la CPU. Para la CPU de varios núcleos, este es el valor promedio de todas las CPU:

  • %user: El porcentaje de tiempo que la CPU está en modo de usuario.

  • %nice: El porcentaje de tiempo que la CPU está en modo de usuario con un valor NICE.

  • %system: El porcentaje de tiempo que la CPU está en modo de sistema.

  • %iowait: El porcentaje de tiempo que los CPU espera para la finalización de entrada y salida. Si el valor de% iowait es demasiado alto, indica que el disco duro tiene un I / O cuello de botella  .

  • %steal: El porcentaje de tiempo de espera inconsciente de la CPU virtual cuando el hipervisor mantiene otro procesador virtual.

  • %idle: Porcentaje de tiempo de inactividad de la CPU. Si el valor de% inactivo es alto, significa que la CPU está relativamente inactiva; si el valor de% inactivo es alto pero el sistema responde lentamente, es posible que la CPU esté esperando para asignar memoria y la memoria se debe aumentar la capacidad; si el valor de% inactivo es continuamente inferior a 10, muestra que la potencia de procesamiento de la CPU es relativamente baja y que el recurso más necesario en el sistema es la CPU.  .

DeviceIndica información del dispositivo:

  • rrqm/s: La cantidad de veces que las solicitudes de lectura al dispositivo se fusionan por segundo y el sistema de archivos fusiona las solicitudes para leer el mismo bloque

  • wrqm/s: El número de solicitudes de escritura combinadas a este dispositivo por segundo

  • r/s: El número de lecturas completadas por segundo

  • w/s: El número de escrituras completadas por segundo

  • rkB/s: La cantidad de datos leídos por segundo (kB como unidad)

  • wkB/s: La cantidad de datos escritos por segundo (kB como unidad)

  • avgrq-sz: La cantidad promedio de datos por operación de E / S (el número de sectores es la unidad)

  • avgqu-sz: La longitud promedio de la cola de solicitudes de E / S en espera de ser procesada

  • await: Tiempo de espera promedio para cada solicitud de E / S (incluido el tiempo de espera y el tiempo de procesamiento, en milisegundos)

  • svctm: El tiempo medio de procesamiento de cada solicitud de E / S (en milisegundos)

  • %util: Qué porcentaje de un segundo se gasta en E / S. Si% util está cerca del 100%, significa que se generan demasiadas solicitudes de E / S y el sistema de E / S está completamente cargado. idleSi la presión de IO es inferior al 70%, la presión de IO es mayor y, en general, la velocidad de lectura tiene más espera.

iostat -xmd 1 3: La nueva mopción se puede utilizar Mcomo una unidad en la salida .

Ver el proceso que más IO consume

Generalmente, primero iostatverifique si hay un cuello de botella de io y luego use el iotopcomando para localizar qué proceso consume más IO:

[root@localhost ~]# iotop
Total DISK READ :       0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
123931 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.02 % [kworker/1:30]
 94208 be/4 xiaolyuh    0.00 B/s    0.00 B/s  0.00 %  0.00 % nautilus-desktop --force [gmain]
     1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --system --deserialize 62
     2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
 94211 be/4 xiaolyuh    0.00 B/s    0.00 B/s  0.00 %  0.00 % gvfsd-trash --spawner :1.4 /org/gtk/gvfs/exec_spaw/0
     4 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]
     6 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
     7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
     8 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_bh]
     9 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_sched]
    10 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [lru-add-drain]
...

Podemos analizar por iostat -d -k -x

imagen

La última columna% util puede ver el grado de escritura en cada disco, mientras que rrqpm / sy wrqm / s representan las velocidades de lectura y escritura respectivamente, lo que generalmente puede ayudar a localizar el disco específico que tiene un problema.

Además, también necesitamos saber qué proceso está leyendo y escribiendo.En términos generales, el desarrollador lo conoce bien o usa el comando iotop para localizar la fuente de lectura y escritura del archivo.

imagen

Pero lo que tenemos aquí es tid, necesitamos convertirlo a pid, podemos encontrar pid a través de readlink, readlink -f /proc/*/task/tid/../ ..

imagen

Después de encontrar el pid, puede ver las condiciones específicas de lectura y escritura de este proceso cat / proc / pid / io

imagen

También podemos usar el comando lsof para determinar las condiciones específicas de lectura y escritura del archivo lsof -p pid

imagen

 A través de iotop -p pidusted puede ver la situación de IO de un solo proceso:

[root@localhost ~]# iotop -p 124146
Total DISK READ :       0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
124146 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % java -jar arthas-demo.jar

Supongo que te gusta

Origin blog.csdn.net/weixin_42073629/article/details/115271137
Recomendado
Clasificación