2011-01-29 11 views
9

Jak lub kiedy wiem, że moja aplikacja internetowa nie obsługuje ruchu/działań i nie wyświetla strony typu "Wala wieloryb"?Kiedy pokazać nieudany wieloryb?

+6

Wolę nazywać to octokatem. –

+0

To prawdopodobnie więcej problemów z serwerem niż problemów z kodem. –

Odpowiedz

8

Możesz spróbować sys_getloadavg(), jeśli chcesz pokazać błąd, gdy serwer znajduje się pod dużym obciążeniem.

<?php 
    $load = sys_getloadavg(); 
    $max_load = 95; 

    if($load[0] >= $max_load){ 
     // Show failwhale 
    }else{ 
     // Do stuff 
    } 
?> 
+0

To całkiem dobre rozwiązanie. Wykonaj testy obciążeniowe serwera, aby dowiedzieć się, jaki rodzaj obciążenia może obsłużyć, aby dać ci pojęcie o tym, jaki jest twój maks. – Endophage

+0

Tak. Ten jest dobry. Teraz zastanawiam się, jak uzyskać ideę maksymalnej wartości? W każdym razie dzięki @Joseph W – ptamzz

3

Jeśli twój serwer nie jest w stanie uzyskać prawidłowej odpowiedzi z innego ważnego serwera, czy jest to kluczowa usługa internetowa, serwer uwierzytelniający, serwer bazy danych itp., Wydaje się, że jest to dobry czas na coś takiego, jak niepowodzenie wieloryba.

1

Ponieważ trzeba by spojrzeć na różne problemy, powiedziałbym początek na obsługę błędów:

http://www.php.net/manual/en/book.errorfunc.php

zajrzeć do dokumentacji dostawcy bazy danych połączenia użytkownika (takich jak zbyt wielu połączeń); tutaj jest MySQL:

http://php.net/manual/en/function.mysql-error.php

http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html

Zakładając, że serwer może odpowiedzieć na obciążenia (a użytkownik nie dostaje timeout 408 życzenie), powinno to być coś wykrywalne w kodzie, nie coś nie tak na obwodzie samego serwera (na przykład serwer z pamięci). Możesz również mieć inne limity czasu, na przykład usługę sieciową, która reaguje powoli lub nie.

Ponadto, jeśli zorientujesz się, rzuć linię do zespołu Facebooka.

3

To jest coś, o czym rozmawiałem wcześniej z kolegami. Nie można przewidzieć, kiedy ruch będzie zbyt wysoki. W końcu serwer zostanie po prostu przewrócony. Potencjalnie możesz uruchomić serwer ze stroną "fail whale" i przełączyć się na twoją stronę operacyjną. Jeśli serwer przejdzie pod obciążeniem, może automatycznie wrócić do strony "niepowodzenie".

Twój serwer nie może już obsługiwać ruchu, gdy się nie powiedzie ... to jest problem związany z identyfikacją. Odpowiedź Matt V będzie działała, ale trzeba by było dodać jakiś test bicia serca i nadal byłby to proces ręczny, który przerywałby odpowiedź "OK".

+0

W pewnym sensie nie zgadzam się; –

+2

@Jared Farrish Jaką? Nie opuszczaj mnie tak ciekawie ... – Endophage

+0

Ups. Powiedziałem, że nie sądziłem, że Twitter pokazuje niepowodzenie wieloryba z powodu problemu typu DOS (co jest zrozumiałe, trudne do udzielenia odpowiedzi), ale dlatego, że Ruby nie był "wystarczająco wytrzymały", aby poradzić sobie z obciążeniem . Jak wskazałem, jeśli serwer nie odpowiada lub odpowiada, ale nie może się z nim połączyć, jest to trudny problem. Jednak w kontenerze serwera mogą wystąpić inne problemy, które mogą pożyczyć je, aby pokazać "błąd witryny", ponieważ niektóre odzyskiwanie trwa (nawet jeśli Apache odpowie, jeśli serwer nie działa poprawnie). Jednak trafię dodać komentarz przez pomyłkę. –

Powiązane problemy