Das Thema
Ich habe einen Server, der pm.max_children (200) erreicht, ohne dass die CPU-Auslastung in die Höhe schießt. Kein Netzwerkverkehr (MB raus / MB rein), aber eine extrem hohe Anzahl zugewiesener Sockets, die nicht geschlossen werden.
CPU: 16 Kerne RAM: 64 GB
Bilder von meinem Prometheus-Monitorsystem.
Netzwerkverkehr, schau dir das Loch an
Keine Sockets gelangen zum TCP_tw-Punkt, sie bleiben bei TCP_alloc hängen
Starker Anstieg der Steckdosennutzung
Um dieses Problem zu beheben, muss ich php-fpm manuell neu starten. Andernfalls bleibt es bei neuen Verbindungen komplett hängen.
CPU-Auslastung, Sie sinkt stark
Aktualisieren
Ich vermute, dass dies daran liegt, dass Tabellen in der Datenbank für einen längeren Zeitraum gesperrt werden, was dazu führt, dass alle Verbindungen, die versuchen, auf diese Daten zuzugreifen, warten müssen und die Daten schließlich in einem großen Stapel von Verbindungen stecken bleiben.
Ich richte derzeit einen MySQL-Exporter ein, um zu sehen, ob ich mehr finden kann.