Come o quando so che la mia applicazione Web non è in grado di gestire il traffico/attività e mostrare un tipo di pagina "Fail Whale"?Quando mostrare una balena fallita?
risposta
Si potrebbe provare sys_getloadavg() se si desidera visualizzare un errore quando il server è in alto carico.
<?php
$load = sys_getloadavg();
$max_load = 95;
if($load[0] >= $max_load){
// Show failwhale
}else{
// Do stuff
}
?>
Se il server Web non è in grado di ottenere una risposta valida da un altro server importante, che si tratti di un servizio Web chiave, un server di autenticazione, un server di database e così via, sembra un buon momento per qualcosa come una balena malfunzionante.
Dal momento che si avrebbe bisogno di guardare una serie di questioni, direi Inizia la gestione degli errori:
http://www.php.net/manual/en/book.errorfunc.php
sguardo nella documentazione di connessione del produttore del database (come troppe connessioni); qui è MySQL:
http://php.net/manual/en/function.mysql-error.php
http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html
supponendo che il server può rispondere al carico (e l'utente non ottiene un 408 Richiesta scaduta), dovrebbe essere qualcosa rilevabile all'interno del codice, non qualcosa di sbagliato all'interno del perimetro del server stesso (ad esempio, memoria insufficiente del server). Potresti anche avere altri timeout che si verificano, ad esempio un servizio web che risponde lentamente o altro.
Inoltre, se capisci, lascia una riga al team di Facebook.
Questo è qualcosa che ho discusso con i colleghi in passato. Non puoi prevedere quando il traffico sarà troppo alto. Alla fine il server sarà semplicemente caduto. Potenzialmente potresti far avviare il server con la pagina "fail whale" e avere una sorta di passaggio al tuo sito operativo. Quindi, se il tuo server è andato sotto carico, potrebbe tornare automaticamente con la pagina "fallita".
Il tuo server non può più gestire il traffico quando fallisce ... è lì che si trova la difficoltà nell'identificazione. La risposta di Matt V funzionerebbe ma dovresti aggiungere una sorta di controllo del battito cardiaco e sarebbe comunque un processo manuale per interrompere la risposta "OK".
In un certo senso non sono d'accordo; –
@Jared Farrish Come mai? Non lasciarmi così curioso ... – Endophage
Oops. In realtà stavo per dire che non pensavo che Twitter mostrasse una balena fallita a causa di un problema di tipo DOS (che è comprensibilmente difficile da rispondere), ma perché Ruby non era abbastanza "robusto" per gestire il carico . Come ho sottolineato, se il server non può rispondere o risponde ma non riesce a passare, è un problema difficile da affrontare. Ma ci possono essere altri problemi all'interno del contenitore del server che potrebbero prestarli per mostrare un "errore del sito" man mano che alcuni recuperi (anche se Apache risponde se il server non funziona correttamente). Tuttavia, ho colpito aggiungere un commento per errore. –
- 1. Ripristino da una rebase fallita
- 2. Come restituire una promessa fallita?
- 3. fallita Gemspec
- 4. Transazione di Raccoglitore fallita quando si restituisce l'immagine della telecamera
- 5. Django - Verifica CSRF fallita
- 6. Autorizzazione PHP fallita quando post in google momento con plusapi
- 7. UITextView selectedRange non mostrare quando impostato programatically
- 8. py2exe: carico DLL fallita
- 9. Continua dopo l'asserzione fallita
- 10. Kurento - WebSocket Connessione fallita
- 11. Funzione ShowHelp notifica fallita
- 12. Creazione di finestre C++/SFML fallita
- 13. Gestione NSURLSessionDownloadTask fallita
- 14. importazione pyHook fallita
- 15. fotocamera startPreview fallita
- 16. ./configure && make install fallita
- 17. Contesto fallita Primavera
- 18. installazione postgresql fallita
- 19. Notifica FCM: inizializzazione fallita
- 20. Ansible: eseguire un'attività fallita
- 21. Newtonsoft.Json deserializzazione dell'immagine base64 fallita
- 22. Installazione testuale fallita, no vcbuild.exe
- 23. Django 1.2.4 Verifica CSRF fallita
- 24. Richiesta di certificato Openssl fallita
- 25. Decoratore Python con multielaborazione fallita
- 26. Ruby gem mysql2 installazione fallita
- 27. PHP: errore "o" sull'istruzione fallita: come lanciare una nuova eccezione?
- 28. PHPUnità fallita con Symfony2 Sessions
- 29. Confusione test fallita - ora legale
- 30. Come mostrare più immagini in una figura?
Preferisco chiamarlo octocat. –
Questo è probabilmente più un problema del server che un problema di codice. –