Maison  >  Article  >  tutoriels informatiques  >  Comment résoudre le problème de la vitesse d'exécution lente d'ansible

Comment résoudre le problème de la vitesse d'exécution lente d'ansible

PHPz
PHPzavant
2024-03-05 17:34:02683parcourir

Nous avons reçu des commentaires du projet selon lesquels le client a rencontré des difficultés lors du déploiement du produit à l'aide des outils que nous avons fournis et a rencontré des problèmes lors de l'étape d'ajout d'hôte, ce qui a empêché l'équipe de mise en œuvre de continuer à faire avancer le travail, ils nous ont donc demandé de l'aide.

Information environnementale : kylin10

Architecture : bras

Comment résoudre le problème de la vitesse dexécution lente dansible

Premiers signes

Pendant le processus de déploiement du système, nous avons utilisé des scripts Ansible pour les opérations par lots sur les hôtes. Récemment, j'ai rencontré le problème du processus d'exécution bloqué. On soupçonne initialement qu'ansible est bloqué pendant l'exécution. Pour vérifier cela, j'ai envoyé une commande sur le terrain pour tester.

localhost$ date
2024年02月19日星期 17:30:41 CST 
localhost$ ansible all -i "192.168.2.84, -m shell -a 'date' --l become --become-method=sudo --become-user=root -u test
192.168.2.84 CHANGED rc=0 >> 
2024年02月19日星期 17:33:34 CST 

Effectivement, il a fallu plus de 2 minutes pour exécuter une simple commande ansible sur l'environnement avant de renvoyer le résultat. La cause du problème réside ici, et nous avons une direction générale.

Ansible s'appuie toujours sur la connexion à distance SSH lors de l'exécution réelle. Auparavant, nous avons rencontré une vitesse de connexion SSH lente. Il est initialement supposé que la vitesse de retour d'exécution peut être lente en raison de la vitesse de connexion SSH lente.

Vérifiez les paramètres ssh et vérifiez la configuration /etc/ssh/sshd_config

GSSAPIAuthentication no #关闭SERVER上的GSS认证  

Sous Linux, la résolution DNS inversée de SSH est activée par défaut. Cela prend beaucoup de temps, elle doit donc être désactivée. Dans le fichier de configuration, bien que UseDNS yes soit commenté, le commutateur par défaut est yes

UseDNS=no  #关闭SERVER上DNS反向解析 

Il s'avère que les deux configurations de paramètres ssh sur le projet sont cohérentes avec ce qui précède, et le test manuel de la connexion ssh à l'hôte homologue est très rapide

Analyse des problèmes

Je n'en ai aucune idée, je ne peux donc utiliser que la commande Linux strace pour tracer les appels système

Comment résoudre le problème de la vitesse dexécution lente dansible

En regardant le journal des straces, nous avons constaté qu'il existe un grand nombre d'attentes de sélection, qui devraient être bloquées pendant une longue période lors de l'exécution d'une certaine opération.

Débogage avec ansible

ansible all -i "192.168.2.84, -m shell -a 'date' --l become --become-method=sudo --become-user=root -u test -vvv

Ajoutez -vvv après la commande pour voir le processus d'exécution détaillé

Comment résoudre le problème de la vitesse dexécution lente dansible

Résoudre le problème

À partir des informations de débogage, vous pouvez voir l'erreur « mux_client_read_packet : read header failed : Broken pipe ». Lors de l'exécution du script, vous pouvez voir que les commandes liées à Python sont en cours d'exécution. ?

J'ai vérifié les informations en ligne et constaté qu'il existe des problèmes de compatibilité entre ansible et python.

Comment résoudre le problème de la vitesse dexécution lente dansible

Vérifiez donc la version de python, vous pouvez voir que la version par défaut de python est python2, mais il y a aussi python3 sur le système, essayez de modifier le lien logiciel vers python3.7 pour vérifier

Comment résoudre le problème de la vitesse dexécution lente dansible

Exécutez à nouveau la commande ansible

Comment résoudre le problème de la vitesse dexécution lente dansible

Le temps d'exécution est de 1,3s. Il semble que la compatibilité des versions ansible et python soit à l'origine de ce problème.

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