Environnement local : système redhat6.7. nginx1.12.1, php7.1.0, le code utilise le framework yii2
Question : Le site Web local doit utiliser le service elasticsearch. Lorsque PHP utilise elasticsearch construit sur un serveur local, la charge locale est normale. Lorsque j'utilise le service elasticsearch d'AWS, la charge sur le serveur local est souvent trop élevée. Vérifiez les journaux nginx et php et ne trouvez aucune exception. Le nombre de connexions simultanées dans le système n’est pas non plus élevé. À ce moment-là, j'ai pensé à un outil de diagnostic strace que notre patron m'a présenté.
Processus de débogage :
Charge du système à ce moment-là :
processus de débogage des traces
Ici, j'ai découvert que lorsque php appelle elasticsearch, il recherchera un fichier localement, et ce fichier n'existe pas. Cela entraîne une charge élevée du serveur. En comparant la différence entre AWS ElasticSearch et le cluster es local. J'ai trouvé que seule la méthode d'appel était différente. Le code est appelé à l'aide de la méthode https, il recherchera donc le fichier de bibliothèque de certificats localement. J'ai immédiatement contacté l'équipe de développement et changé la méthode d'appel en http Après avoir observé pendant un certain temps, la charge du serveur est revenue à la normale.
strace -T -e access -p 1379
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!