|
El comando vmstat es la herramienta de monitorización más común de Linux/Unix que muestra los valores de estado de un servidor en un intervalo de tiempo dado, incluyendo los del servidorUso de la CPU, uso de memoria, intercambio de memoria virtual, lectura y escritura de E/S. Este comando es mi favorito para comprobar Linux/Unix, uno es que Linux/Unix es compatible, y el otro es que, comparado con el superior, puedo ver el uso de CPU, memoria y IO de toda la máquina, en lugar de solo ver el uso de CPU y memoria de cada proceso (diferentes escenarios de uso). Generalmente, el uso de la herramienta vmstat se realiza mediante dos parámetros numéricos: el primero es el número de intervalos de tiempo muestreados, la unidad son segundos y el segundo parámetro es el número de muestras, tales como:
root@ubuntu:~# vmstat 2 1 procs -----------memory---------- ---swap-- -----io---- -system-- ----CPU---- r b swpd buff cache gratis si so bi bo en cs us sy id wa 1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0 2 significa que el estado del servidor se recoge una vez cada dos segundos, y 1 significa que el estado del servidor se recoge solo una vez. De hecho, durante el proceso de solicitud, monitorizaremos durante un periodo de tiempo y, si no queremos monitorizarlo, podemos simplemente terminar el VMSTAT directamente, por ejemplo:
root@ubuntu:~# VMSTAT 2 procs -----------memory---------- ---swap-- -----io---- -system-- ----CPU---- r b swpd buff cache gratis si so bi bo en cs us sy id wa 1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0 0 0 0 3499584 315836 3819660 0 0 0 0 88 158 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 2 86 162 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 10 81 151 0 0 100 0 1 0 0 3499732 315836 3819660 0 0 0 2 83 154 0 0 100 0
Esto significa que vmstat recopila datos cada 2 segundos y continúa hasta que termino el programa, y termino el programa tras recoger datos 5 veces aquí. Bien, se introduce el comando, ahora empecemos a explicar el significado de cada parámetro. rSignifica ejecutar la cola (es decir, cuántos procesos se asignan realmente a la CPU), el servidor que probé está actualmente relativamente inactivo, no hay programas en ejecución, y cuando este valor supera el número de CPUs, habrá un cuello de botella en la CPU. Esto también está relacionado con la carga de la parte superior: generalmente la carga es mayor si supera 3, si supera 5, y si supera 10, no es normal y el estado del servidor es muy peligroso. La carga de la parte superior es similar a la de una cola en marcha por segundo. Si la cola en ejecución es demasiado grande, significa que tu CPU está ocupada, lo que normalmente provoca un alto uso de la CPU. bSignifica el proceso bloqueado, esto no es mucho que decir, el proceso está bloqueado, todo el mundo lo entiende. SWWPDSi el tamaño de la memoria virtual utilizada es mayor que 0, significa que tu máquina tiene memoria física insuficiente, y si no es la causa de la fuga de memoria del programa, entonces es momento de actualizar la memoria o migrar las tareas que consumen memoria a otra máquina. Gratis El tamaño de la memoria física libre, la memoria de mi máquina es de 8G en total y el resto de 3415M. Buff El sistema Linux/Unix se usa para almacenar qué contenido en el directorio, permisos, etc. almacena en caché, probablemente ocupo más de 300M en esta máquina CachéLa caché se usa directamente para recordar los archivos que abrimos, almacenarlos en búfer, yo ocupo más de 300M en mi propia máquina (aquí está la idea de Linux/Unix: tomar parte de la memoria física libre para almacenar en caché archivos y directorios, para mejorar el rendimiento de la ejecución del programa; cuando el programa usa memoria, el búfer o la caché se usarán rápidamente). ) si Si este valor es mayor que 0, significa que la memoria física no es suficiente o que la memoria se ha filtrado. Mi máquina tiene mucha memoria y todo está bien. así que El tamaño del disco escrito en la memoria virtual por segundo, si este valor es mayor que 0, es el mismo que el anterior. bi Equipamiento de bloqueEl número de bloques recibidos por segundo, aquí el dispositivo de bloque se refiere a todos los discos y otros dispositivos de bloque del sistema, el tamaño de bloque por defecto es 1024 bytes, no tengo ninguna operación de E/S en la máquina, así que siempre ha sido 0, pero lo he visto en máquinas que manejan grandes cantidades de datos (2-3T) que pueden alcanzar los 140000/s, y la velocidad de escritura del disco es casi 140M por segundo boEl número de bloques enviados por segundo por un dispositivo de bloques, por ejemplo, cuando leemos un archivo, bo es mayor que 0. Bi y bo suelen estar cerca de 0, de lo contrario la IO es demasiado frecuente y hay que ajustarla. enEl número de interrupciones por segundo de CPU, incluyendo las interrupciones temporales CSEl número de cambios de contexto por segundo, por ejemplo, cuando llamamos a una función del sistema, necesitamos cambiar de contexto y de conmutación de hilosContexto del procesoPor ejemplo, en servidores web como Apache y nginx, generalmente hacemos pruebas de rendimiento con miles o incluso decenas de miles de concurrencia, y el proceso de elección de un servidor web puede reducirse por el pico del proceso o hilo, prueba de estrés, hasta que el cs sea un valor relativamente pequeño, el número de procesos e hilos es un valor más apropiado. Las llamadas al sistema también son iguales, cada vez que se llama a una función del sistema, nuestro código entra en el espacio del núcleo, lo que provoca un cambio de contexto, lo cual consume mucho recursos, y deberíamos intentar evitar llamadas frecuentes a funciones del sistema. Demasiados cambios de contexto hacen que la mayor parte de tu CPU se desperdicie en el cambio de contexto, lo que resulta en menos tiempo para que la CPU haga cosas serias, y la CPU no se aprovecha completamente, lo cual no es recomendable. nosotrosusuarioTiempo de CPUUna vez vi que en EE.UU. estaba cerca de 100 y la cola de ejecución de r llegaba a 80 en un servidor que hacía cifrado y descifrado con mucha frecuencia (la máquina fue sometida a pruebas de estrés y el rendimiento no era bueno). sySi el tiempo de CPU del sistema es demasiado alto, significa que las llamadas al sistema son largas, como operaciones frecuentes de E/S. identificación Tiempo de CPU inactivo, en términos generales, id + us + sy = 100, generalmente creo que id es el uso de CPU en reposo, us es el uso de CPU por el usuario, sy es el uso de CPU del sistema. wtEspera al tiempo de CPU de E/S.
|