Lokale Umgebung: Redhat6.7-System. nginx1.12.1, php7.1.0, der Code verwendet das yii2-Framework
Frage: Die lokale Website muss den Elasticsearch-Dienst verwenden. Wenn PHP Elasticsearch verwendet, das auf einem lokalen Server erstellt wurde, ist die lokale Last normal. Wenn ich den Elasticsearch-Service von AWS nutze, ist die Auslastung des lokalen Servers oft zu hoch. Überprüfen Sie die Nginx- und PHP-Protokolle und finden Sie keine Ausnahmen. Auch die Anzahl gleichzeitiger Verbindungen im System ist nicht hoch. Zu diesem Zeitpunkt dachte ich an ein Strace-Diagnosetool, das mir unser Chef erzählt hatte.
Debugging-Prozess:
Systemauslastung zu diesem Zeitpunkt:
Strace-Debugging-Prozess
Hier habe ich festgestellt, dass PHP beim Aufruf von Elasticsearch lokal nach einer Datei sucht und diese Datei nicht existiert. Dies führt zu einer hohen Serverlast. Durch Vergleich des Unterschieds zwischen AWS Elasticsearch und lokalem ES-Cluster. Ich habe festgestellt, dass nur die aufrufende Methode unterschiedlich war. Der Code wird mit der https-Methode aufgerufen und sucht daher lokal nach der Zertifikatsbibliotheksdatei. Ich kontaktierte sofort das Entwicklungsteam und änderte die Aufrufmethode auf http. Nach einiger Zeit normalisierte sich die Serverauslastung.
strace -T -e access -p 1379
Das obige ist der detaillierte Inhalt vonZeichnen Sie einmal auf und verwenden Sie Strace, um das Problem zu diagnostizieren, dass PHP zu viele Systemressourcen belegt.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!