sql >> Databáze >  >> RDS >> Mysql

Náhodné PHP FastCGI / Reset připojení peerem / neúplné hlavičky

Tento problém se obecně netýká pouze hostitele, ale také vývojáře, v závislosti na konfiguraci. Někteří hostitelé jsou však s FastCGI dosti přísní a omezí vaše schopnosti. Obecně je jednodušší spustit bez použití FastCGI a stačí použít mod_php, pokud mají specifickou potřebu používat FastCGI ve vaší aplikaci.

Potřebovali bychom vidět váš obal fcgi (co je v /dev/shm/blackmou-php.fcgi) nebo .htaccess pro spawnování FastCGI, abychom vám mohli lépe pomoci, aniž bychom věděli, se kterými soubory a kódem, který je v těchto souborech, se problém vyskytuje. Také vaši hostitelé používají Apache, LightHttpd nebo Nginx (nebo kombinaci)? V tomto bodě důrazně doporučuji aktualizaci na PHP 5.3.9+

Protože to může být způsobeno mnoha problémy, FastCGI účinně zabraňuje napadení vašeho webu/skriptů odmítnutím služby nebo zhroucení kvůli únikům paměti atd. (např. pokus zpracovat 80 000 připojení jednoduše zrušením a omezením počtu požadavků nebo uvíznutí v nekonečné smyčce vypršením časového limitu a ukončením procesu)

Tato chyba je zejména obecně způsobena limitem idle_timeout (ve výchozím nastavení 30 sekund) nebo maximálním limitem dětských procesů. Může být také způsobena tím, že někdo spustí dlouho běžící skript a zavře prohlížeč/připojení před dokončením skriptu.

FastCGI spustí svůj procesový wrapper, provede příkaz, vyprší časový limit před dokončením procesu, připojení je pro partnery považováno za resetované.

Dalším příkladem je dosažení maximálního počtu dětí (maxProcesses) (např. mnoho stránek uvádí 2 nebo 4 jako příklad, kdy ve skutečnosti můžete potřebovat 20 nebo 50 v závislosti na průměrné návštěvnosti) Pokud jsou všechny děti aktuálně aktivní a další požadavek/ je vytvořeno připojení, děti jsou omezeny na maxProcesses, se kterými FastCGI nebude sdílet aktivní potomky, takže musí nejprve buď ukončit proces a spustit nový podřízený proces, nebo zrušit požadavek v závislosti na vašich konfiguracích.

Zde je několik dalších informací o nastavení:

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

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

Příklad obalu

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

AKTUALIZACE

Aby se k tomu přidalo, může to být také způsobeno limitem paměti php

Pokud výše uvedený problém nevyřeší, aktualizujte svůj php.ini a zvyšte memory_limit



  1. Bezpečnostní přístupy v datovém modelování. Část 4

  2. Context.User má hodnotu NULL v Application_AuthenticateRequest prostřednictvím ověřování systému Windows v aplikaci Asp.net MVC

  3. MySQL procházet tabulky

  4. Jak nastavit AUTO_INCREMENT v Laravel s Eloquent?