Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zufälliges PHP FastCGI / Zurücksetzen der Verbindung durch Peer / unvollständige Header

Dieses Problem ist im Allgemeinen nicht nur Host-spezifisch, sondern abhängig von der Konfiguration auch entwicklerbezogen. Einige Hosts sind jedoch ziemlich streng mit FastCGI und werden Ihre Möglichkeiten einschränken. Es ist im Allgemeinen einfacher, ohne FastCGI zu arbeiten und einfach mod_php zu verwenden, es sei denn, Sie verwenden spezielle Notwendigkeit haben, FastCGI in Ihrer Anwendung zu verwenden.

Wir müssten Ihren fcgi-Wrapper (was in /dev/shm/blackmou-php.fcgi enthalten ist) oder .htaccess für FastCGI-Spawning sehen, um Ihnen besser helfen zu können, ohne zu wissen, bei welchen Dateien und dem Code in diesen Dateien das Problem auftritt. Verwenden Ihre Hosts auch Apache, LightHttpd oder Nginx (oder eine Kombination)? An diesem Punkt empfehle ich dringend, auf PHP 5.3.9+ zu aktualisieren

Da dies durch eine Reihe von Problemen verursacht werden kann, verhindert FastCGI effektiv, dass Ihre Site/Skripte durch einen Denial of Service angegriffen werden oder aufgrund von Speicherlecks usw. abstürzen (z von Anfragen oder durch Zeitüberschreitung in einer Endlosschleife stecken bleiben und den Prozess beenden)

Insbesondere dieser Fehler wird im Allgemeinen durch ein Idle_timeout (standardmäßig 30 Sekunden) oder eine Begrenzung der maximalen untergeordneten Prozesse verursacht. Er kann auch dadurch verursacht werden, dass jemand ein lange laufendes Skript startet und seinen Browser/ihre Verbindung schließt, bevor das Skript abgeschlossen ist.

FastCGI startet seinen Prozess-Wrapper, führt einen Befehl aus, läuft vor Abschluss des Prozesses ab, Verbindung wird von Peer als zurückgesetzt angesehen.

Ein weiteres Beispiel ist, dass die maximale Anzahl von Kindern (maxProcesses) erreicht ist (z. B.:Viele Websites zeigen 2 oder 4 als Beispiel, obwohl Sie in Wirklichkeit je nach durchschnittlichem Datenverkehr 20 oder 50 benötigen). Wenn alle Kinder derzeit aktiv sind und eine zusätzliche Anfrage / Verbindung hergestellt wird, sind die untergeordneten Prozesse auf maxProcesses beschränkt, mit denen FastCGI die aktiven untergeordneten Prozesse nicht teilt, also muss es zuerst entweder den Prozess beenden und einen neuen untergeordneten Prozess starten oder die Anfrage verwerfen, abhängig von Ihren Konfigurationen.

Hier noch ein paar Informationen zu den Einstellungen:

http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html

http://www.fastcgi.com/drupal/node/10

Wrapper-Beispiel

PHP_FCGI_CHILDREN=0 #no limit
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS

AKTUALISIEREN

Außerdem kann dies auch durch das PHP-Speicherlimit verursacht werden

Wenn das oben Gesagte Ihr Problem nicht löst, aktualisieren Sie Ihre php.ini, um memory_limit zu erhöhen