Maison  >  Article  >  Opération et maintenance  >  Comment vérifier la charge du système sous Linux

Comment vérifier la charge du système sous Linux

藏色散人
藏色散人avant
2019-08-02 17:27:296172parcourir

Comment vérifier la charge du système sous Linux

L'état de chargement du système d'exploitation reflète l'utilisation des ressources de l'application, à partir de laquelle les goulots d'étranglement de l'optimisation des applications peuvent être détectés.

La charge moyenne du système fait référence au nombre moyen de processus en cours d'exécution ou sans interruption.

est en cours d'exécution, ce qui signifie qu'il est en cours d'exécution, occupant le processeur ou prêt, en attente de la planification du processeur.

Ne pas déranger, indiquant le blocage, en attente des E/S

Recommandé : [Tutoriel vidéo Linux]

Dans le système Linux, vous devez vérifiez la charge En général, utilisez la commande uptime (la commande w et la commande top sont également acceptables) *

1. commande uptime

$ uptime\
16:33:56 up 69 days,  5:10,  1 user,  load average: 0.14, 0.24, 0.29

Les informations ci-dessus sont analysées comme suit :

<.>16:33:56 : Heure actuelle

jusqu'à 69 jours, 5h10 : Le système fonctionne depuis 69 jours, 5 heures et 10 minutes

1 utilisateur : Il y a actuellement 1 utilisateur connecté à la charge moyenne du système : 0,14, 0,24, 0,29 : La charge moyenne du système au cours des dernières 1 minute, 5 minutes et 15 minutes

charge moyenne : 0,14, 0,24, 0,29 : La moyenne charge du système au cours des dernières 1 minute, 5 minutes et 15 minutes

Analyse de la charge moyenne

Afficher le nombre de cœurs de processeur logiques :

$ grep &#39;model name&#39; /proc/cpuinfo | wc -l\
1\

Le résultat en cours d'exécution montre qu'il y a 1 cœur de processeur logique. En prenant 1 cœur de processeur comme exemple, en supposant que le processeur traite jusqu'à 100 processus par minute –

load=0, aucun processus ne nécessite de processeur

load=0,5, le processeur traite 50 processus

load=1, le CPU a traité 100 processus. À ce moment, le CPU est plein, mais le système peut toujours fonctionner correctement

load=1.5, le CPU a traité 100 processus, et il reste 50 processus. Un processus est en cours d'élimination et attend le traitement du processeur. À ce moment, le processeur est déjà surchargé

Afin de faire fonctionner le système en douceur, la valeur de charge ne doit pas dépasser 1,0, donc. qu'aucun processus ne doit attendre et que tous les processus peuvent être traités pour la première fois en un rien de temps.

Évidemment, 1,0 est une valeur clé. Si elle dépasse cette valeur, le système n'est pas dans un état optimal. Généralement, 0,7 est une valeur idéale.

De plus, l'état de santé de la valeur de charge est également lié au nombre de cœurs de processeur dans le système. Si le nombre de cœurs de processeur est de 2, alors la valeur de santé de la valeur de charge doit être de 2, et ainsi de suite.

La valeur de charge moyenne sur 15 minutes est généralement utilisée pour évaluer la charge du système.

2. w commande

$ w\
 17:47:40 up 69 days,  6:24,  1 user,  load average: 0.46, 0.26, 0.25\
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT\
lvinkim  pts/0    14.18.144.2      15:55    0.00s  0.02s  0.00s w

Ligne 1 : identique à celle de disponibilité.

En dessous de la ligne 2, la liste des utilisateurs actuellement connectés.

3. Commande supérieure

$ top\
top - 17:51:23 up 69 days,  6:28,  1 user,  load average: 0.31, 0.30, 0.26\
Tasks:  99 total,   1 running,  98 sleeping,   0 stopped,   0 zombie\
Cpu(s):  2.3%us,  0.2%sy,  0.0%ni, 97.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st\
Mem:   1922244k total,  1737480k used,   184764k free,   208576k buffers\
Swap:        0k total,        0k used,        0k free,   466732k cached\
\
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                \
    1 root      20   0 19232 1004  708 S  0.0  0.1   0:01.17 init                                                                    \
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd                                                                \
...

Ligne 1 : identique à celle de disponibilité.

Ligne 2 : informations sur le numéro de processus.

Tâches : 99 au total : il y a 99 processus au total

1 en cours d'exécution : 1 processus occupe le processeur

98 en veille : 98 processus en veille

0 arrêté : 0 processus arrêtés

0 zombie : 0 processus zombie

Ligne 3 : utilisation du processeur

nous (utilisateur) : occupé par des processus utilisateur non sympas Ratio CPU

sy (système) : Le ratio entre le noyau et les processus du noyau occupant le CPU

ni (nice) : Le ratio du CPU occupé par les processus qui ont changé de priorité dans l'espace des processus utilisateur

id (idle) : taux d'inactivité du processeur. Si le système est lent et que cette valeur est élevée, cela signifie que la raison de la lenteur du système n'est pas une charge élevée du processeur

wa (iowait) : Le rapport de temps du CPU en attente pour effectuer les opérations d'E/S, cet indicateur peut être utilisé pour résoudre les problèmes d'E/S de disque, généralement combiné avec wa et id pour déterminer

hi (Hardware IRQ) : le rapport de le temps passé par le CPU à traiter les interruptions matérielles

si (Software Interrupts) : Le rapport du temps passé par le CPU à traiter les interruptions logicielles

st (steal) : Le temps écoulé, le rapport de Temps CPU occupé par d'autres tâches dans la machine virtuelle

Quelques situations qui nécessitent une attention particulière :

Le processus utilisateur a une proportion élevée et le fonctionnement des E/S est faible : cela signifie que la raison pour laquelle Le système lent est que le processus consomme beaucoup de CPU, et il s'accompagne généralement d'un faible taux d'inactivité, ce qui signifie que le CPU a très peu de temps d'inactivité.

Le fonctionnement des E/S est faible et le taux d'inactivité id est élevé : la possibilité d'un goulot d'étranglement des ressources CPU peut être éliminée.

Le fonctionnement des E/S est élevé : cela signifie que les E/S prennent beaucoup de temps CPU. Vous devez vérifier l'utilisation de l'espace de swap. L'espace de swap est situé sur le disque et les performances sont importantes. inférieur à celui de la mémoire. Lorsque la mémoire est épuisée, le swap est utilisé. Lors de l'utilisation de l'espace, cela aura un impact sérieux sur les performances, donc pour les serveurs ayant des exigences de performances plus élevées, il est généralement recommandé de désactiver l'espace de swap. D'un autre côté, s'il y a beaucoup de mémoire mais que wa est élevé, vous devez vérifier quel processus consomme beaucoup de ressources d'E/S.

Plus de situations de charge peuvent être jugées de manière flexible dans la pratique.

4. Commande iostat

La commande iostat peut vérifier l'utilisation des E/S de la partition système

$ iostat \
Linux 2.6.32-573.22.1.el6.x86_64 (sgs02)   01/20/2017     _x86_64_   (1 CPU)\
\
avg-cpu:  %user   %nice %system %iowait  %steal   %idle\
           2.29    0.00    0.25    0.04    0.00   97.41\
\
Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn\
vda               1.15         3.48        21.88   21016084  131997520

Quelques indicateurs IO remarquables :

Périphérique : nom du disque

tps : requêtes de transfert d'E/S par seconde

Blk_read/s : combien de blocs sont lus par seconde Pour afficher la taille du bloc, reportez-vous à la commande tune2fs

. Blk_wrtn/s : combien de blocs sont écrits par seconde

Blk_read : combien de blocs sont lus au total

–Blk_wrtn : combien de blocs sont écrits au total

5. Commande iotop

iotop La commande est similaire à la commande top, mais elle affiche l'état d'E/S de chaque processus, ce qui est utile pour localiser les processus avec des opérations d'E/S lourdes.

# iotop\
Total DISK READ: 0.00 B/s | Total DISK WRITE: 774.52 K/s\
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                \
  272 be/3 root        0.00 B/s    0.00 B/s  0.00 %  4.86 % [jbd2/vda1-8]\
 9072 be/4 mysql       0.00 B/s  268.71 K/s  0.00 %  0.00 % mysqld\
 5058 be/4 lvinkim     0.00 B/s    3.95 K/s  0.00 %  0.00 % php-fpm: pool www\
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init

Vous pouvez voir l'intensité de lecture et d'écriture de différentes tâches.

6. outil sysstat

很多时候当检测到或者知道历史的高负载状况时,可能需要回放历史监控数据,这时 sar 命令就派上用场了,sar 命令同样来自 sysstat 工具包,可以记录系统的 CPU 负载、I/O 状况和内存使用记录,便于历史数据的回放。

sysstat 的配置文件在 /etc/sysconfig/sysstat 文件,历史日志的存放位置为 /var/log/sa\

统计信息都是每 10 分钟记录一次,每天的 23:59 会分割统计文件,这些操作的频率都在 /etc/cron.d/sysstat 文件配置。\

七、sar 命令

使用 sar 命令查看当天 CPU 使用:

$ sar\
Linux 2.6.32-431.23.3.el6.x86_64 (szs01)   01/20/2017     _x86_64_   (1 CPU)\
\
10:50:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle\
11:00:01 AM     all      0.45      0.00      0.22      0.40      0.00     98.93\
Average:        all      0.45      0.00      0.22      0.40      0.00     98.93

使用 sar 命令查看当天内存使用:

$ sar -r\
Linux 2.6.32-431.23.3.el6.x86_64 (szs01)   01/20/2017     _x86_64_   (1 CPU)\
\
10:50:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit\
11:00:01 AM     41292    459180     91.75     44072    164620    822392    164.32\
Average:        41292    459180     91.75     44072    164620    822392    164.32

使用 sar 命令查看当天 IO 统计记录:

$ sar -b\
Linux 2.6.32-431.23.3.el6.x86_64 (szs01)   01/20/2017     _x86_64_   (1 CPU)\
\
10:50:01 AM       tps      rtps      wtps   bread/s   bwrtn/s\
11:00:01 AM      3.31      2.14      1.17     37.18     16.84\
Average:         3.31      2.14      1.17     37.18     16.84

更多 sar 用法,请 man sar 。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer