Rolf B: "16384G"

Beitrag lesen

Hallo TS,

im Normalfall ist PHP auf einen relativ knappen Speicher eingestellt, weil Hatti P. Normalwebrequest kein Übermaß an RAM zum Bearbeiten braucht. Wenn ein Admin mehr einstellt, als gut für das System ist, ist der Admin schuld. Und wenn der User per ini_set Mist macht, dann muss man entweder ini_set abschalten oder sich Suhosin anschauen. Mit mod_php kann man auch php_admin_value verwenden. Ein Standardfeature, um in der php.ini bestimmte Settings zu sperren, scheint's nicht zu geben.

Ein Webserver, der gut beschäftigt werden soll, hat mehrere PHP FastCGI Instanzen laufen, auf die die eingehenden Requests verteilt werden. Kann ich bei meinem kleinen IIS hier jedenfalls relativ problemlos einstellen, der startet dann je nach Bedarf ein bis drölf PHP Instanzen und beendet sie bei Nichtgebraucht auch wieder.

Was soll denn ein solches PHP tun, wenn es zu wenig Speicher feststellt? Soll es andere Prozesse beenden, um Speicher freizubekommen? Soll es den Request ablehnen? Das ist Lastverteilung und Lastoptimierung, und dafür ist es zu spät, wenn der Request bei PHP ankommt. Das muss vorher passieren, entweder vom Webserver gesteuert oder von einer anderen Engine, die sich um Lastverteilung kümmert. Beim IIS kenne ich keine Schalter, um Requests eher in der Warteschlange zu halten wenn der Speicher knapp wird, aber vielleicht gibt's ja andere Loadbalancer, die das können.

Die bessere Idee ist aber, einen Webserver so aufzusetzen, dass man jedem PHP Prozess X MB Speicher zugesteht und ihn so zu betreiben, dass typsicherweise $$N\cdot X$$ MB Speicher frei sind.

Und wenn man - von einem Webrequest angestoßen - wirklich speicherintensive Dinge tun muss, empfiehlt sich der Einsatz eines Application Servers, an den der Webserver die Anfrage delegiert.

Anders ist es bei CRON Jobs, die ein PHP Script laufen lassen sollen. Aber auch da stellt sich die Frage, was passieren soll? Willst Du im PHP unterschiedliche Algorithmen verwenden, wenn viel oder wenig Speicher da ist? Anders cachen? Was tust Du, wenn Du Dich für A oder B entschieden hast, und dann kommt Speicherschwein Herta vorbei und halbiert den freien Speicher? Das ist ein hochkomplexes Thema.

Rolf

--
sumpsi - posui - obstruxi