Wenn ein PHP-Prozess läuft und läuft und läuft und ....

forquato

New Member
Hallo,

ich betreibe Apache 2.2 mit PHP 5.2.10 (mit fcgi Handler) und eAccelerator.

ich benutze lfd+csf als Firewall, der mir ständig meldet:

lfd on hostname: Excessive resource usage: AcountX(7550)

Time: Tue Sep 15 22:38:12 2009 +0200
Account: accountX
Resource: Process Time
Exceeded: 10860 > 3600 (seconds)
Executable: /usr/local/cpanel/cgi-sys/php5
Command Line: php5
PID: 7550
Killed: No

Und das für jeden User, also jede Domain, die von Besuchern aufgerufen wird.


folgende grundlegende Annahme:

Sagen wir ein PHP5-Prozess läuft schon seit 14497 sekunden.
Ich kille diesen Prozess. Was könnte passieren?

Frage: Ein Kunde der gerade etwas tut wird sich ärgern?

Annahme: Ein Prozess der schon so lange lange läuft kann bedenkenlos gekilled werden?

Problem: PHP-Prozesse auf meinem Server laufen und laufen... Sie beenden sich nicht selber, auch wenn der User nichts mehr tut.

Würded ihr mir raten die Prozesse, die sagen wir mal länger als 7000 sekunden laufen, automatisch von meiner Firewall beenden zu lassen?

Wenn nein, welche Risiken entstehen dabei.

Vielen Dank für euere Antworten.

gruß,

forquato
 
Wenn du PHP via FastCGI einbindest, ist es normal, dass Prozesse längere Zeit laufen. Das ist ja gerade der Sinn von FastCGI. Anders sieht die Sache aus, wenn deine Webserver-Konfiguration besagt, dass die Prozesse alle X Sekunden neugestartet werden sollen und ein Prozess schon wesentlich länger als X Sekunden läuft.
 
Wird das eigentlich über die Apache-Direktive MaxRequestsPerChild definiert oder direkt in der fcgid-Konfiguration?

Danke.
 
Ok, also die maximale Laufzeit eines Scripts kann man in der Fcgid Konfiguration definieren.

Ich kann das aber auch meine Firewall beenden lassen.

Welche maximale Laufzeit würdet Ihr empfehlen?

10h, 1 Tag?

Mir ist bewußt, dass das killen und erneueste Laden des PHP-Interpreters mehr CPU-Leistung in Anspruch nehmen wird. Aber eine wenig besuchte Website braucht nun wirklich nicht einen ewig-laufenden PHP-Prozess.
 
Über die Konfiguration des FastCGI-Moduls.

Ich finde leider den Ort der Konfiguration des fcgid moduls nicht.

also das habe ich gefunden:

LoadModule fcgid_module modules/mod_fcgid.so
MaxRequestsPerProcess 500
AddHandler fcgid-script .php5 .php4 .php .php3 .php2 .phtml
FCGIWrapper /usr/local/cpanel/cgi-sys/php5 .php5
FCGIWrapper /usr/local/cpanel/cgi-sys/php5 .php4
FCGIWrapper /usr/local/cpanel/cgi-sys/php5 .php
FCGIWrapper /usr/local/cpanel/cgi-sys/php5 .php3
FCGIWrapper /usr/local/cpanel/cgi-sys/php5 .php2
FCGIWrapper /usr/local/cpanel/cgi-sys/php5 .phtml



Wo und wie stelle ich die maximale laufzeit eines PHP.Skripts ein?
 
Wenn man etwas überlegt, könnte man auf die Idee kommen, dass es etwas mit einem Timeout oder der Lifetime eines Prozesses zu tun haben könnte... :rolleyes:
 
okay... überlegt. und weiter?

was hat fcgid damit zu tun?
Es ist doch bei fcgid so, dass Prozesse nicht geschlossen werden und per user
parat gehalten werden, falls "doch noch ein request kommt" -> aber wie gesagt für wenig besuchte websites völlig sinloss.

FRAGE:

HAT das schon jemand einstellen können? Hat jemand eine Lösung?
 
Back
Top