Métodos comunes de análisis de fallas del sistema

"Pico de rendimiento" Capítulo 2.5 Método

USE是utilization、saturation、erros三个词的缩写,应用于性能研究,用来识别系统瓶颈,一言以蔽之,就是:对于所有的资源,查看它的使用率、饱和度和错误。

这些术语定义如下:
资源:所有服务器物理元器件(CPU、总线。。。)。某些软件资源也能算在内,提供有用的指标。
使用率:在规定的时间间隔内,资源用于服务工作的时间百分比。
饱和度:资源不能再服务更多额外工作的程度,通常有等待队列。
错误:错误事件的个数。

Por ejemplo:

tu:

  • hardware
    • CPU: Utilización (resultados vistos por TOP), proporción de tiempo ocupado dentro de 1 segundo
    • Memoria: memoria disponible actualmente
    • Tarjeta de red: rendimiento de recepción de paquetes/ancho de banda máximo, rendimiento de envío de paquetes/ancho de banda máximo (capacidad de la tarjeta de red)
    • E/S del dispositivo de almacenamiento: tiempo de ocupación del dispositivo/tiempo total
  • software
    • Mutex: tiempo que se mantiene el bloqueo/tiempo total
    • Grupo de subprocesos: el tiempo en que el grupo de subprocesos está ocupado/tiempo total
    • Capacidad de procesos/subprocesos: el número de subprocesos/procesos en el sistema
    • Capacidad de descriptor de archivo: el número de descriptores en el sistema

S:

  • hardware
    • CPU: longitud de la cola ejecutable
    • Memoria: páginas anónimas, swap, etc., y eventos oom
    • E/S del dispositivo de almacenamiento: longitud de la cola de espera
  • software
    • Mutex: la longitud de la cola de subprocesos que esperan el bloqueo
    • Grupo de subprocesos: la longitud de la cola de solicitudes que espera que se procese el grupo de subprocesos
    • Capacidad de procesos/subprocesos: la cantidad de subprocesos/procesos que esperan que el sistema cree
    • Capacidad de descriptor de archivo: el número de descriptores que esperan que el sistema cree

MI:

  • hardware
    • E/S de dispositivo de almacenamiento: número de errores de dispositivo
  • software
    • Capacidad de proceso/subproceso: número de errores de creación
    • Capacidad del descriptor de archivo: el número de fallas en la asignación del descriptor de archivo

Comandos comunes:

# 以下命令部分依赖sysstat包
uptime              # 对系统的全局状态有一个大致的了解
 
dmesg | tail        # 显示最新的几条系统日志

df  -h              # 检查磁盘空间
 
top                 # 全面了解系统指标
 
vmstat 1            # 显示CPU,内存,虚拟内存相关信息
 
mpstat -P ALL 1     # 显示每个核具体消耗情况
 
pidstat 1           # 带历史信息的top
 
iostat -xz 1        # 查看块设备即io状况
 
free -m             # 查看系统内存
 
sar -n DEV 1        # 查看网络接口的吞吐量
 
sar -n TCP,ETCP 1   # 检查TCP相关信息
 

tiempo de actividad:

Este comando puede verificar rápidamente el promedio de carga del sistema. En los sistemas Linux, esto incluye tareas que necesitan o usan cpu, así como tareas que están bloqueadas en io.

Estos tres valores son promedios dinámicos ponderados por el índice de carga del sistema en 1 minuto, 5 minutos y 15 minutos, que puede considerarse simplemente como el valor promedio en este período de tiempo. Con base en estos tres valores, podemos entender cómo cambia la carga del sistema con el tiempo. Por ejemplo, suponga que ahora hay un problema con el sistema, verifica estos tres valores y encuentra que el valor de carga de 1 minuto es mucho más pequeño que el valor de carga de 15 minutos, entonces probablemente se haya perdido el punto en el tiempo cuando el sistema salió mal.

¿Qué es la carga del sistema?
El promedio de carga del sistema se define como el número promedio de procesos en la cola de ejecución durante un intervalo de tiempo específico. Un proceso se coloca en la cola de ejecución si cumple las siguientes condiciones:

No está esperando el resultado de la operación de E/S.
No ha entrado activamente en el estado de espera (es decir, no ha llamado 'esperar')
y no se ha detenido (por ejemplo: esperando la terminación)
. , el número de procesos activos actuales por núcleo de CPU no es superior a 3, ¡entonces el sistema funciona bien! Por supuesto, lo que se menciona aquí es cada núcleo de CPU, es decir, si su host es una CPU de cuatro núcleos, siempre que la última cadena de caracteres generada por el tiempo de actividad sea inferior a 12, significa que la carga del sistema no es muy Por supuesto, si llega a 20, significa que la carga actual del sistema es muy grave, y se estima que la apertura y ejecución de scripts web será muy lenta.

 

mensaje:

Necesita agregar permiso sudo dmesg
Este comando muestra los últimos registros del sistema. Aquí buscamos principalmente si hay algunos errores del sistema que causarán problemas de rendimiento.

 

df-h:

Ver el uso del disco

 

arriba

Estado de la CPU (estados de la CPU): incluido el índice de ocupación de procesos del usuario, el índice de ocupación de procesos del sistema, el índice de ocupación de procesos de prioridad agradable del usuario y el índice de recursos de CPU inactivos, etc.;

Estado de la memoria (Mem): incluida la cantidad total de memoria, uso, cantidad libre, etc.;

Estado de la partición de intercambio (Swap): incluye la cantidad total de particiones de intercambio, el uso, la cantidad inactiva, etc.;

El estado de cada proceso: incluido el ID del proceso, el nombre de usuario, la prioridad, el uso de CPU y memoria, y la línea de comando ejecutada al ejecutar el proceso;

Después de ingresar a la parte superior, presione los siguientes botones para tener las funciones correspondientes:

  • 【q】Salir del programa superior
  • 【c】Información extendida de la línea de comandos para mostrar la línea de comandos completa;
  • 【P】Ordenar por uso de CPU;
  • [N] Ordenar por ID de proceso;
  • 【M】Ordenar por uso de memoria;
  • [Espacio] Actualiza inmediatamente la información de la pantalla;

Después de ejecutar el comando superior, el sistema actualizará automáticamente la información de estado cada 5 segundos. Si desea especificar el intervalo de actualización, agregue "-d" al inicio 

 

vmstat1:

Sumando el tiempo de CPU en modo usuario (us) y el tiempo de CPU en modo kernel (sy), podemos confirmar aún más si la CPU está ocupada. Si el tiempo de espera para io (wa) es alto, significa que el disco es el cuello de botella; esto también se incluye en el tiempo de inactividad (id), la CPU también está inactiva en este momento y la tarea está bloqueada en el disco. IO en este momento. El tiempo de espera de io (wa) puede considerarse como otra forma de inactividad de la CPU, lo que puede explicar por qué la CPU está inactiva.
Cuando el sistema maneja IO, definitivamente consumirá tiempo de modo kernel (sy). Si el tiempo invertido en el modo kernel es alto, como más del 20 %, necesitamos un análisis más profundo. Tal vez la eficiencia de procesamiento del kernel para IO no sea alta, o el código tenga problemas, como múltiples llamadas de bucle asíncrono en lugar de operaciones por lotes.
Indicadores a mirar:

- r: tareas en estado ejecutable, incluidas tareas en ejecución y tareas en espera de ejecución. Este valor es un mejor indicador de la saturación de la CPU que el promedio de carga. Este valor no incluye la espera de tareas relacionadas con io. Cuando el valor de r es mayor que el número actual de CPU, el sistema está en un estado saturado.

- libre: tamaño de memoria libre en KB.

- si, entonces: intercambio de páginas de memoria. Si estos dos valores son distintos de cero, significa que no hay suficiente memoria.

- us, sy, id, wa, st: varios indicadores de tiempo de cpu (tomando el valor promedio de todos los cpus), que representan respectivamente: tiempo de modo de usuario, tiempo de modo kernel, tiempo de inactividad, tiempo de espera de io, tiempo de robo (en un entorno virtualizado menor sobrecarga del sistema en otros inquilinos)

vmstat muestra información sobre la memoria virtual y la CPU. 1 en la línea de comando significa mostrar cada 1 segundo.

 

mpstat -P TODO 1:

El comando mpstat imprime la hora de cada CPU y puede verificar si la CPU procesa las tareas de manera uniforme. Si el uso de una sola CPU es alto, es una aplicación de un solo subproceso.

 

pidstat 1:

pidstat es muy similar a top, excepto que puede imprimir cada dos intervalos en lugar de borrar la pantalla cada vez como top. Este comando puede ver fácilmente los posibles patrones de comportamiento del proceso. También puede copiar directamente el pasado, lo que puede registrar fácilmente los cambios en el estado de ejecución de cada proceso a lo largo del tiempo.

 

iostat-xz 1:

iostat es una herramienta importante para comprender la carga actual y el rendimiento de los dispositivos de bloque (discos). El significado de varios indicadores:

- r/s, w/s, rkB/s, wkB/s: el número de lecturas por segundo, el número de escrituras por segundo, la cantidad de datos leídos por segundo y la cantidad de datos escritos por segundo enviados por el sistema al dispositivo. Estos indicadores reflejan la carga de trabajo del sistema. Es probable que el problema de rendimiento del sistema sea demasiada carga.

- await: Tiempo medio de respuesta de las peticiones del sistema al dispositivo IO. Esto incluye la hora en que la solicitud estuvo en cola y la hora en que se procesó. Los tiempos de respuesta promedio que superan los valores empíricos indican que el dispositivo está saturado o que hay un problema con el dispositivo.

- avgqu-sz: la longitud promedio de la cola de solicitud del dispositivo. Una longitud de cola superior a 1 indica que el dispositivo está saturado.

- %util: utilización del dispositivo. El grado de ocupación del dispositivo indica la proporción de tiempo que el dispositivo procesa io dentro de cada segundo. La utilización superior al 60 % suele causar problemas de rendimiento (vistos con await), pero cada dispositivo es diferente. Una utilización cercana al 100% indica que el disco está saturado

Aviso:

Si el dispositivo de bloque es un dispositivo de bloque lógico y hay muchos discos físicos detrás del dispositivo lógico rápido, el 100 % de utilización solo puede indicar que parte del tiempo de procesamiento de E/S ha alcanzado el 100 %; el disco físico back-end puede estar lejos de estar saturado. puede manejar más carga.

Un rendimiento de E/S de disco deficiente no significa necesariamente que la aplicación tenga problemas. Las aplicaciones pueden realizar E/S asíncrona de muchas maneras sin bloquear en E/S; las aplicaciones también pueden usar tecnologías como lectura previa y almacenamiento en búfer de escritura para reducir el impacto de la latencia de E/S en ellas mismas.

 

libre -m

disponible: Memoria disponible actualmente; queremos ver si este valor es cercano a cero. Los valores cercanos a cero darán como resultado una E/S de disco más alta y un rendimiento más bajo.

 

sar-n DEV 1

Verifique el rendimiento de la interfaz de red: rxkB/s y txkB/s pueden medir la carga y también puede ver si se alcanzó el límite de tráfico de la red. En el ejemplo anterior, el rendimiento de eth2 alcanza unos 8 Mbytes/s, que es casi 64 Mbits/seg, que es mucho menos que 10 Gbit/seg.

 

sar-n TCP,ETCP 1

Algunos resúmenes de indicadores TCP importantes:
- retrans/s: el número de retransmisiones tcp por segundo

- pasivo/s: conexión tcp iniciada desde la fuente cada segundo, es decir, la conexión aceptada por el programa local usando accept()

- active/s: La conexión tcp que se abre activamente localmente cada segundo, es decir, el programa local usa la llamada al sistema connect()

Nota:

La cantidad de activos y pasivos generalmente se puede usar para medir la carga del servidor: la cantidad de conexiones aceptadas (pasivas), la cantidad de conexiones descendentes (activas). Simplemente puede pensar que activa es la conexión desde el host y pasiva es la conexión desde el host, pero esta no es una declaración muy estricta, como la conexión entre loalhost y localhost.

Las retransmisiones indican problemas en la red o en el servidor. Tal vez la red sea inestable, tal vez el servidor esté sobrecargado y comience la pérdida de paquetes. El ejemplo anterior significa solo 2 retransmisiones por segundo.
 

Supongo que te gusta

Origin blog.csdn.net/sm9sun/article/details/113181355
Recomendado
Clasificación