Domanda

A volte il mio intero sito in base Django va in errori di timeout 504 di gateway in modo che nessuna pagina può essere visualizzata.

E 'possibile scrivere un programma di shell e cronjob funzionare ogni 5 minuti per rilevare tali errori e riavviare processo FastCGI, se necessario?

Attualmente sto usando il comando seguente per riavviare FastCGI nel caso in cui è caduto, ma non funziona per la situazione di cui sopra, perché quando si verificano 504 errori di gateway, i processi sono ancora in esecuzione.

ps ax | grep -v grep | grep port=8001 > /dev/null || restart_fcgi.sh
È stato utile?

Soluzione

Forse si dovrebbe capire perché il sito inizia servendo 504 errori primi - controllare i registri (o aggiungere la registrazione se non si dispone di informazioni sufficienti), e risolvere qualunque sia il problema. In alternativa, si possono trovare nginx + apache + mod_wsgi un approccio più stabile - nginx è un fantastico server web front-end per servire contenuti statici, ma Apache è eccellente per ospitare processi dinamici. Provate a combinare entrambi. Ho usato per usare nginx + FastCGI, ma ho trovato il primo ad essere un approccio molto più stabile.

Se non siete ancora in grado di determinare che cosa sta causando il problema, è possibile impostare uno script monitor che viene eseguito a livello locale e controlla il codice di risposta - se trova una 5XX si può forzare riavviare il processo FastCGI. È possibile utilizzare Python + httplib per lo script, e os.system esecuzione dello script di shell (più un adeguato kill -9 dichiarazione) di cui sopra.

Altri suggerimenti

Credo che se si hanno questo problema, quindi supervisore è tuo amico. Un ottimo amico. Come daemontools, ad eccezione di facile configurazione, un sacco di aiuto e il loro utilizzo non root.

Si dovrebbe cercare di trovare il problema di sicuro, ma a prescindere, un'ora di preparazione significa che sarete in grado di fare affidamento sul processo di riavvio dopo il fallimento per un tempo sufficiente per vivere la tua vita.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top