Comando de ubicación de problemas de Linux

Comando de ubicación de problemas de Linux

1. La situación general

【1】 arriba

Utilice este comando para ver la CPU del sistema, la carga, etc.

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
2014 root      20   0 2653m  28m  10m S 100.1  1.5   8:44.59 java

Verifique el proceso con la tasa de utilización de CPU más alta, puede ver que es un programa Java

load average: 1.00, 0.80, 0.42

La esquina superior derecha es la situación de carga del sistema, que representa respectivamente 1 minuto, 5 minutos y 15 minutos de muestreo. Si la suma de estos valores se divide por 3 y luego se multiplica por 100%, excede el 60%, que significa que la carga actual del sistema está bajo presión

【2】 tiempo de actividad

topVersión corta del comando

 21:09:18 up 15 min,  2 users,  load average: 1.00, 0.89, 0.53

Este comando es principalmente capaz de ver la carga de la máquina.

2. Estado de la CPU

【1】 vmstat

gramática vmstat -n 采样时间间隔 采样次数

Por ejemplo: vmstat -n 2 3muestreo una vez cada 2 segundos, un total de 3 muestras

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 1645680  18376 153000    0    0    68     2  413   44 39  0 61  0  0	
 1  0      0 1645600  18376 153000    0    0     0     0 1031   56 50  0 50  0  0	
 1  0      0 1645600  18376 153000    0    0     0     0 1030   58 50  0 50  0  0

A través de este comando, puede ver cierta información del sistema, incluida la CPU

procs:

  • r: El número de procesos en ejecución y esperando el intervalo de tiempo de la CPU, el número no debe exceder 2 veces el número total de núcleos, de lo contrario significa que el sistema está bajo alta presión.
  • b: El número de procesos en espera de recursos, incluida la E / S de disco en espera, la E / S de red en espera, etc.

UPC:

  • us: uso de CPU de procesos de usuario
  • sy: uso de CPU de los procesos del sistema
  • id: porcentaje de CPU libre
  • wa: porcentaje de CPU en espera de E / S de recursos

Si el valor de us + sy es superior al 80%, el uso de la CPU puede ser demasiado alto

【2】 mpstat

gramática mpstat -P ALL 采样时间间隔 采样次数

Por ejemplo: mpstat -P ALL 2 3muestreo una vez cada 2 segundos, un total de 3 muestras

Linux 2.6.32-642.el6.x86_64 (???) 	2019年??月??日 	_x86_64_	(2 CPU)

21时30分07秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
21时30分09秒  all   50.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   50.00
21时30分09秒    0  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
21时30分09秒    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

21时30分09秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
21时30分11秒  all   50.12    0.00    0.00    0.00    0.00    0.00    0.00    0.00   49.88
21时30分11秒    0  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
21时30分11秒    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

21时30分11秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
21时30分13秒  all   50.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   50.00
21时30分13秒    0  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
21时30分13秒    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

平均时间:  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
平均时间:  all   50.04    0.00    0.00    0.00    0.00    0.00    0.00    0.00   49.96
平均时间:    0  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
平均时间:    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

Se puede ver que la CPU de esta máquina es de doble núcleo. Uno de ellos (CPU0) tiene una tasa de uso del usuario (% usr) del 100,00% y la tasa de inactividad (% inactivo) es del 0,00%, lo que muestra que el La presión actual de la CPU de la máquina es muy alta.

【3】 pidstat

gramática pidstat -p 进程号 -u 采样间隔 采样次数

P.ej:

Nos ps -ef|grep javacomando para obtener al proceso del programa Java ID 2014

root       2014   1981 99 20:58 pts/0    00:44:03 java A

Vuelva pidstat -p 2014 -u 2 3a pasar para obtener el uso de CPU del programa

Linux 2.6.32-642.el6.x86_64 (???) 	2019年??月??日 	_x86_64_	(2 CPU)

21时44分03秒       PID    %usr %system  %guest    %CPU   CPU  Command
21时44分05秒      2014  100.00    0.00    0.00  100.00     1  java
21时44分07秒      2014  100.00    0.00    0.00  100.00     1  java
21时44分09秒      2014  100.00    0.00    0.00  100.00     1  java
平均时间:      2014  100.00    0.00    0.00  100.00     -  java

Puede ver que el uso actual de CPU del programa ha alcanzado el 100,00% (% usr)

[4] Alto uso de CPU en combate real

  1. topPara ver %CPUel proceso más altoPID
  2. ps -mp 进程ID -o THREAD,tid,time, Ver el hilo específicoTID
    • -m: muestra todos los hilos
    • -o: muestra el formato especificado por el usuario
    • -p ID de proceso: muestra el tiempo que el proceso usa la CPU
  3. El hilo TID en decimal, 转换为十六进制el hilo TID y debe estar en minúsculas
  4. jstack 进程ID | grep 十六进制线程ID -A显示的行数, Ver la información de la pila del hilo especificado, el número de líneas especificado anteriormente

Ejemplo:

public class HighCpu {
    
    
    public static void main(String[] args) {
    
    
        for (;;) {
    
    
        }
    }
}

Código de problema

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
3619 root      20   0 2653m  22m  10m S 100.1  1.1   0:10.39 java

[1] El ID del proceso de la vista superior es 3619

ps -mp 3619 -o THREAD,tid,time

USER     %CPU PRI SCNT WCHAN  USER SYSTEM    TID     TIME
root     98.9   -    - -         -      -      - 00:00:25
root      0.0  19    - futex_    -      -   3619 00:00:00
root     98.8  19    - -         -      -   3620 00:00:25
root      0.0  19    - futex_    -      -   3621 00:00:00
root      0.0  19    - futex_    -      -   3622 00:00:00
root      0.0  19    - futex_    -      -   3623 00:00:00
root      0.0  19    - futex_    -      -   3624 00:00:00
root      0.0  19    - futex_    -      -   3625 00:00:00
root      0.0  19    - futex_    -      -   3626 00:00:00
root      0.0  19    - futex_    -      -   3627 00:00:00
root      0.0  19    - futex_    -      -   3628 00:00:00
root      0.0  19    - futex_    -      -   3629 00:00:00
root      0.0  19    - futex_    -      -   3630 00:00:00

[2] Ver el ID de hilo específico como 3620

[3] Convierta 3620 a hexadecimal, minúsculas, a saber: e24

jstack 3619 | grep e24 -A50

"main" #1 prio=5 os_prio=0 tid=0x00007f7f24009000 nid=0xe8f runnable [0x00007f7f28d08000]
   java.lang.Thread.State: RUNNABLE
	at ???.HighCpu.main(HighCpu.java:3)

"VM Thread" os_prio=0 tid=0x00007f7f24073000 nid=0xe92 runnable 

"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f7f2401e000 nid=0xe90 runnable 

"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f7f24020000 nid=0xe91 runnable 

"VM Periodic Task Thread" os_prio=0 tid=0x00007f7f240d7000 nid=0xe99 waiting on condition 

JNI global references: 5

[4] A través del comando jstack, verifique las primeras 50 líneas del código ejecutado por el hilo e24 y podrá ver que el código del problema está en la línea 3 del archivo HighCpu.java

3. Estado de la memoria

【1】 gratis

gramática free -m

Por ejemplo: free -muse MB como unidad para ver el uso de memoria

             total       used       free     shared    buffers     cached
Mem:          1990        562       1427          1         51        276
-/+ buffers/cache:        234       1756
Swap:         2047          0       2047

Puede ver que la memoria física es de 2 GB y se han utilizado 562 MB. 2 GB de memoria de intercambio, sin usar

La aplicación ocupa memoria / memoria física, lo cual es razonable al 20% ~ 70%

【2】 pidstat

gramática pidstat -p 进程号 -r 采样间隔 采样次数

Por ejemplo :, pidstat -p 4526 -r 2 3ver el uso de memoria del proceso 4526

Linux 2.6.32-642.el6.x86_64 (???) 	2019年??月??日 	_x86_64_	(2 CPU)

22时31分18秒       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
22时31分20秒      4526      0.00      0.00 2716884 262204  12.86  java
22时31分22秒      4526      0.00      0.00 2716884 262204  12.86  java
22时31分24秒      4526    271.50      0.00 2716884 299048  14.67  java
平均时间:      4526     90.50      0.00 2716884 274485  13.47  java

Puede ver que el uso de memoria del programa ha alcanzado el 14,67%

4. Estado del disco

【1】 gl

Use comandos df -hpara ver el uso del disco y el estado restante

P.ej:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        18G  4.3G   13G  26% /
tmpfs           996M   72K  996M   1% /dev/shm
/dev/sda1       190M   39M  142M  22% /boot

Puede ver el área de inicio del sistema (el punto de montaje es / boot), un total de 190 MB, 39 MB (aproximadamente 22%) usados ​​y 142 MB restantes

El directorio raíz (el punto de montaje es /), un total de 18 GB, 4,3 GB (aproximadamente 26%) utilizados y 13 GB restantes

【2】 iostat

Sintaxis iostat -dkx 采样间隔 采样次数, puede ver el estado de E / S del disco

  • -d: muestra el estado de uso del dispositivo (disco)
  • -k: muestra la salida del disco en KB
  • -x: incluye métricas de disco expandidas en la salida

Este comando se puede usar con lsblkcomandos (enumere todos los dispositivos de bloque y muestre las dependencias entre ellos)

P.ej:lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0  200M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 17.8G  0 part /

Por ejemplo: iostat -dkx 1 3para ver el estado actual de E / S del disco

Linux 2.6.32-642.el6.x86_64 (???) 	2019年??月??日 	_x86_64_	(2 CPU)

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.88     0.52    2.20    0.36    41.71     3.52    35.35     0.00    0.96    0.90    1.32   0.78   0.20

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.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

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.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

Necesito prestar atención a varios parámetros:

  • rkB / s: la cantidad de gigabytes leídos por segundo
  • wkB / s: la cantidad de gigabytes escritos por segundo
  • await: tiempo de respuesta del disco, el tiempo medio de espera (milisegundos) para cada operación de E / S de dispositivo. Cuanto menor sea el tiempo, mejor
  • % util: qué porcentaje de los segundos del intervalo de tiempo estadístico se utiliza para operaciones de E / S, es decir, el valor = tiempo de operación de E / S del dispositivo / tiempo de intervalo estadístico. Por lo tanto, este valor implica qué tan ocupado está el dispositivo. Si el valor es 100%, significa que el dispositivo está funcionando a plena capacidad (si son varios discos, debido a la simultaneidad del disco, el uso del disco puede no haber alcanzado el embotellamiento)

【3】 pidstat

gramática pidstat -p 进程ID -d 采样间隔 采样次数

Nota: El parámetro -d solo está disponible para kernel 2.6.20 y versiones posteriores . Puede uname -rver la información del número de versión del kernel a través de

P.ej:

2.6.32-642.el6.x86_64

Puede ver que la versión del kernel es 2.6.32

P.ej:pidstat -p 4969 -d 1 3

Linux 2.6.32-642.el6.x86_64 (???) 	2019年??月??日 	_x86_64_	(2 CPU)

23时30分41秒       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
23时30分42秒      4969      0.00      0.00      0.00  java
23时30分43秒      4969      0.00      0.00      0.00  java
23时30分44秒      4969      0.00      0.00      0.00  java
平均时间:      4969      0.00      0.00      0.00  java

Puede ver la cantidad de gigabytes leídos por segundo (kB_rd / s) y la cantidad de gigabytes que se han completado o se escribirán (kB_wr / s)

5. Estado de la red

ifstat

Tenga en cuenta que este comando no viene con un sistema Linux, necesitamos el sitio web oficial para descargarlo, compilarlo e instalarlo

La última versión es v1.1-01 / 01/2004 "The Happy New Year Release"

-rwxr-xr-x. 1 root root     67920 10月  5 23:57 ifstat-1.1.tar.gz

gramática ifstat -a 采样间隔 采样次数

Supervise todos los puertos de red, incluido el puerto de bucle invertido (lo)

P.ej:ifstat -a 1 3

        lo                 eth0       
 KB/s in  KB/s out   KB/s in  KB/s out
    0.00      0.00      0.06      0.18
    0.00      0.00      0.06      0.13
    0.00      0.00      0.06      0.13

Puede ver el volumen de lectura (KB / s de entrada) y el volumen de lectura (KB / s de salida) de la tarjeta de red eth0 por segundo

Supongo que te gusta

Origin blog.csdn.net/adsl624153/article/details/103865696
Recomendado
Clasificación