Mysql
 sql >> Database >  >> RDS >> Mysql

FastCGI PHP casuale / Connessione ripristinata da peer / Intestazioni incomplete

Questo problema generalmente non è solo specifico dell'host, è anche correlato allo sviluppatore, a seconda della configurazione. Tuttavia, alcuni host sono piuttosto severi con FastCGI e limiteranno le tue capacità. In genere è più facile da eseguire senza utilizzare FastCGI e utilizzare semplicemente mod_php a meno che tu non hai bisogno specifico di utilizzare FastCGI nella tua applicazione.

Avremmo bisogno di vedere il tuo wrapper fcgi (cosa c'è in /dev/shm/blackmou-php.fcgi) o .htaccess per la generazione di FastCGI, per assisterti meglio senza sapere quali file e il codice si trovano su quei file con cui si verifica il problema. Anche i tuoi host usano Apache, LightHttpd o Nginx (o una combinazione)? A quel punto suggerisco caldamente di aggiornare per usare PHP 5.3.9+

Poiché ciò può essere causato da un numero qualsiasi di problemi, FastCGI impedisce efficacemente che il tuo sito/gli script vengano attaccati da un Denial of Service o che si blocchino a causa di perdite di memoria, ecc. (ES:prova a gestire 80.000 connessioni semplicemente eliminando e limitando il numero di richieste o rimanere bloccati in un ciclo infinito per timeout e terminazione del processo)

Questo errore in particolare è generalmente causato da un idle_timeout (30 secondi per impostazione predefinita) o da un limite massimo di processi secondari. Può anche essere causato da qualcuno che avvia uno script di lunga durata e chiude il browser/la connessione prima del completamento dello script.

FastCGI lancia il suo process wrapper, esegue un comando, timeout prima del completamento del processo, connessione vista come resettata dal peer.

Un altro esempio è che viene raggiunto il numero massimo di bambini (maxProcesses) (ES:molti siti mostrano 2 o 4 come esempio quando in realtà potrebbero essere necessari 20 o 50 a seconda del traffico medio)Se tutti i bambini sono attualmente attivi e una richiesta aggiuntiva/ viene stabilita la connessione, i figli sono limitati a maxProcesses, a cui FastCGI non condividerà i figli attivi, quindi deve prima terminare il processo e avviare un nuovo processo figlio, oppure eliminare la richiesta, a seconda delle tue configurazioni.

Ecco qualche informazione in più sulle impostazioni:

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

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

Esempio di wrapper

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

AGGIORNAMENTO

Per aggiungere a questo, questo può anche essere causato dal limite di memoria php

Se quanto sopra non risolve il tuo problema, aggiorna il tuo php.ini per aumentare memory_limit