Vor einiger Zeit sind wir auf ein interessantes Problem gestoßen. Manchmal (nicht immer, nehmen wir an, bei etwa jedem 100.-200. Treffer) dauert session_start() sehr lange. Bis zu 60 Sekunden. (Die längste dauerte 63, normalerweise etwa 50).
Auf dem Server läuft CentOS 6.5 (Linux-Kernel 2.6.32-431.17.1.el6.x86_64) nginx/1.4.7 (ja, ich weiß, es ist alt) + Apache/2.2.15 + PHP 5.3.3 (unter Verwendung von mod_php). Zwei Intel SSD 530 ergeben Raid 0. Es ist viel freier RAM vorhanden, 5+ GB. Ich habe versucht, den vm.swappiness-Wert anzupassen, vielleicht liegt es an einer Speicher-Festplatten-Transaktion. Hilft nicht.
Es erscheint, auch wenn der Server fast nicht ausgelastet ist.
Sitzungen in Dateien gespeichert. Legen Sie Sitzungen auf RAM-Laufwerk (tmpfs) ab. Hilft nichts. Es gibt ungefähr ein paar Hundert Sitzungsdateien im Verzeichnis. Es sollte also kein Suchproblem geben. Manchmal tritt das gleiche Problem bei include/require auf, PHP braucht Sekunden, um die Datei zu laden, bevor mit der Verarbeitung begonnen wird. Es handelt sich also um ein E/A-Problem. atop/top hat nichts Ungewöhnliches angezeigt, während der Sitzungsstartprozess hängt.
free -m-Ausgabe während des Hängens
total used free shared buffers cached
Mem: 32101 23485 8616 0 1532 15642
-/+ buffers/cache: 6310 25790
Swap: 16383 1222 15160
frei -m Ausgabe normal
total used free shared buffers cached
Mem: 32101 23438 8662 0 1532 15623
-/+ buffers/cache: 6281 25819
Swap: 16383 1222 15160
nginx schreibt dies in die Zeit der Verlangsamung
2015/09/29 15:40:36 [warn] 16854#0: *14779 eine Upstream-Antwort wird beim Lesen des Upstreams in eine temporäre Datei /var/cache/nginx/proxy_temp/1/02/0000000021 gepuffert
habe versucht, proxy_max_temp_file_size festzulegen, aber das hat nicht geholfen.
Vielleicht weiß jemand, was der Grund sein könnte, oder in diese Richtung zu graben