Je souhaite résoudre les problèmes de goulets d'étranglement au sein de mes instances Linux Amazon EC2. Quels outils avancés puis-je utiliser avec EC2Rescue pour Linux pour cela ?

Date de la dernière mise à jour : 08/05/2020

Je souhaite résoudre les problèmes de performances au sein de mes instances Linux Amazon Elastic Compute Cloud (Amazon EC2). Quels outils puis-je utiliser avec EC2Rescue pour Linux pour cela ?

Brève description

Des goulets d'étranglement sur les instances Linux Amazon EC2 peuvent se produire au niveau des performances de l'UC, des performances d'E/S en mode bloc ou des performances réseau. Pour déterminer où se produisent les goulets d'étranglement des performances, vous pouvez tirer parti des 33 outils disponibles dans EC2Rescue pour Linux à l'aide du cadre bcc dans eBPF (extended Berkeley Packet Filter). eBPF exécute efficacement et en toute sécurité les outils de surveillance dans les environnements de production sans frais généraux de performances importants.

Solution

(Pour les administrateurs système Linux expérimentés)

Installez le package bcc pour votre système d'exploitation.

1.    Connectez-vous à l’instance en utilisant SSH.

2.    Installez le package bcc. Pour les instructions de téléchargement et d'installation pour les distributions autres que Amazon Linux, reportez-vous à la documentation spécifique à votre distribution. Pour les instances Amazon Linux, utilisez la commande suivante :

$ sudo yum install bcc

3.    Les outils bcc doivent se trouver dans la variable PATH de votre système d'exploitation pour que EC2 Rescue pour Linux les exécute. Utilisez la commande suivante pour placer les outils dans la variable PATH :

$ sudo -s
# export PATH=$PATH:/usr/share/bcc/tools/

4.    Une bonne pratique consiste à ajouter définitivement le paramètre PATH à votre système Linux. La procédure à suivre pour rendre ce paramètre permanent varie en fonction de votre distribution Linux spécifique. Pour Amazon Linux, utilisez les commandes suivantes :

Ouvrez ~/.bash_profile à l'aide de l'éditeur vi :

# vi ~/.bash_profile

Ajoutez /usr/share/bcc/tools à la variable PATH :

PATH=$PATH:$HOME/bin:/usr/share/bcc/tools

Enregistrez le fichier et quittez l'éditeur vi.

Source du profil mis à jour :

#source ~/.bash_profile

6.    Téléchargez et installez l'outil EC2Rescue pour Linux, puis accédez au répertoire d'installation de votre instance.

Les modules bcc suivants sont couramment utilisés avec EC2Rescue pour Linux.

Outils de performances d'UC

bccsoftirqs.yaml : ce module exécute l'outil softirqs qui suit les interruptions logicielles (IRQs), puis stocke les statistiques de durée dans le noyau pour plus d'efficacité. Un intervalle peut être fourni à l'aide de --period, ainsi qu'un nombre à l'aide de l'argument --times. L'outil imprime automatiquement les horodatages de chaque exécution. Pour plus d'informations, consultez EC2Rescue pour Linux - bccsoftirqs.yaml sur le site web GitHub.

bccrunqlat.yaml : ce programme montre le temps d'attente des tâches avant de s'exécuter sur l'UC. Les résultats sont affichés sous la forme d'un histogramme. Pour plus d'informations, consultez EC2Rescue pour Linux - bccrunqlat.yaml sur le site web GitHub.

# ./ec2rl run --only-modules=bccsoftirqs,bccrunqlat --period=5 --times=5

Outils de performances d'E/S en mode bloc

bccbiolatency.yaml : trace les E/S du périphérique de stockage en mode bloc et enregistre la distribution de la latence d'E/S (temps) par périphérique de disque, comme un stockage d'instance et Amazon Elastic Block Store (Amazon EBS), attachés à votre instance EC2. Les résultats sont imprimés sous forme d'histogramme. Le module s'exécute pendant la période spécifiée et collecte les résultats un nombre spécifié de fois. Dans l'exemple ci-dessous, les variables de période et de temps sont définies sur 5. Pour plus d'informations, consultez EC2Rescue pour Linux - bccbiolatency.yaml sur le site web GitHub.

bccext4slower.yaml : collecte les résultats à l'aide de l'outil ext4slower. ext4slower suit les lectures, écritures, ouvertures et fsyncs ext4 plus lents qu'un seuil de 10 ms par défaut. Le module s'exécute pendant la période spécifiée et collecte les résultats un nombre spécifié de fois. Dans l'exemple ci-dessous, les variables de période et de temps sont définies sur 5. Pour plus d'informations, consultez EC2Rescue pour Linux - bccext4slower.yaml sur le site web GitHub.

Vous pouvez utiliser le module bccxfsslower de la même manière que bccext4slower.yaml pour les systèmes de fichiers XFS. Pour plus d'informations, consultez EC2Rescue pour Linux - bccxfsslower.yaml sur le site web GitHub.

bccfileslower.yaml : collecte les résultats à l'aide de fileslower qui suit les lectures et écritures synchrones basées sur des fichiers plus lentement qu'un seuil par défaut de 10 ms. Le module s'exécute pendant la période spécifiée et collecte les résultats un nombre spécifié de fois. Dans l'exemple ci-dessous, les variables de période et de temps sont définies sur 5. Pour plus d'informations, consultez EC2Rescue pour Linux - bccfileslower.yaml sur le site web GitHub.

# ./ec2rl run --only-modules=bccbiolatency,bccext4slower,bccfileslower --period=5 --times=5

Outils de performance réseau

bcctcpconnlat.yaml : trace la fonction noyau effectuant des connexions TCP actives (par exemple, via un appel système connect()). Les résultats affichent la latence (heure) de la connexion. La latence est mesurée localement, c'est-à-dire le temps entre SYN et le paquet de réponse pour une période spécifiée. La latence de connexion TCP indique le temps nécessaire pour établir une connexion. Pour plus d'informations, consultez EC2Rescue pour Linux - bcctcpconnlat.yaml sur le site web GitHub.

bcctcptop.yaml : affiche le débit de connexion TCP par hôte et port pour la période et le temps spécifiés sans effacer l'écran. Pour plus d'informations, consultez EC2Rescue pour Linux - bcctcptop.yaml sur le site web GitHub.

bcctcplife.yaml : résume les sessions TCP qui s'ouvrent et se ferment pendant le suivi. Pour plus d'informations, consultez EC2Rescue pour Linux - bcctcplife.yaml sur le site web GitHub.

# ./ec2rl run --only-modules=bcctcpconnlat,bcctcptop,bcctcplife --period=5 --times=5

Exemple de résultat

Les résultats de l'exécution de ces modules se trouvent sous le répertoire /var/tmp/ec2rl après chaque exécution unique d'un ou de plusieurs modules sur votre instance.

L'exemple suivant est le résultat du module bcctcptop avec le paramètre de période défini sur 5 et le paramètre de temps défini sur 2 :

# ./ec2rl run --only-modules=bcctcptop --period=5 --times=2
# cat /var/tmp/ec2rl/2020-04-20T21_50_01.177374/mod_out/run/bcctcptop.log 
I will collect tcptop output from this alami box 2 times.
Tracing... Output every 5 secs. Hit Ctrl-C to end
21:50:17 loadavg: 0.74 0.33 0.17 5/244 4285
PID    COMM         LADDR                 RADDR                  RX_KB  TX_KB
3989   sshd         172.31.22.238:22      72.21.196.67:26601         0      9
21:50:22 loadavg: 0.84 0.36 0.18 4/244 4285
PID    COMM         LADDR                 RADDR                  RX_KB  TX_KB
3989   sshd         172.31.22.238:22      72.21.196.67:26601         0     11
2731   amazon-ssm-a 172.31.22.238:54348   52.94.225.236:443          5      4
2938   amazon-ssm-a 172.31.22.238:58878   52.119.197.249:443         0      0

Vous pouvez charger les résultats dans AWS Support à l'aide de la commande suivante :

# ./ec2rl upload --upload-directory=/var/tmp/ec2rl/2020-04-20T21_50_01.177374 --support-url="URLProvidedByAWSSupport"

Remarque : les guillemets de la commande précédente sont obligatoires. Si vous exécutez l'outil avec sudo, chargez les résultats à l'aide de sudo. Exécutez la commande help upload pour plus de détails sur l'utilisation d'une URL pré-signée Amazon Simple Storage Service (Amazon S3) pour charger les résultats.


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?