PHP Leistung anpassen, damit die Webseite schneller lädt
Habe die Tage etwas Probleme gehabt mit der Performance von meiner Nextcloud Installation. Zwar hat mein Server ausreichend Power, aber der Log-in bei meiner Cloud war immer sehr langsam. Meist endete das in einem 504 Timeout von Nginx. Nun meine gefundene Lösung „PHP Leistung anpassen“.
Bei der Suche nach der passenden Lösung, kam mir nur PHP8.0 in den Sinn, das da was mit den Einstellungen nicht passt. Der Fehler sah im Log so aus.
2022/03/28 10:01:01 [error] 1743#1743: *182965 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 2003:f9:5715:8f00:xxxx:xxxx:1a5f:a3f3, server: cloud.dasnetzundich.de, request: "POST /login HTTP/2.0", upstream: "fastcgi://unix:/var/run/php/php8.0-fpm.sock", host: "cloud.dasnetzundich.de"
Nach etwas suchen, auch im Forum von Nextcloud bin ich auf eine Lösung gestoßen.
pm.max_children
pm.start_servers
pm.min_spare_servers
pm.max_spare_servers
Diese Werte waren noch auf den Standardwerten, diese sind aber viel zu niedrig eingestellt. Nun kommt die gefundene Lösung zum Einsatz. Es müssen die korrekten Werte errechnet werden. Grob kann man sagen.
[Verfügbarer RAM] – [genutzter RAM] – [10% buffer] = [verfügbarer RAM für PHP]
Results:
[verfügbarer RAM für PHP] / [durchschnittliche Prozessgröße (hab hier 100 MB eingetragen] = [max_children]
pm.max_children = [max_children]
pm.start_servers = [25% von max_children]
pm.min_spare_servers = [25% von max_children]
pm.max_spare_servers = [75% von max_children]
Damit kam ich auf
pm = dynamic
pm.max_children = 355
pm.start_servers = 88
pm.min_spare_servers = 88
pm.max_spare_servers = 266
Noch einfacher gehts mit einer Webseite, die das alles für einen ausrechnet.
Diese Werte in die www.conf eintragen genauer gesagt abändern und den PHP Prozess neu starten.
sudo nano /etc/php/8.0/fpm/conf.d/www.conf
sudo service php8.0-fpm restart