2011-01-29 2 views
9

Как и когда я знаю, что мое веб-приложение не может обрабатывать трафик/действия и показывать страницу «Fail Whale»?Когда показывать неудавшегося кита?

+6

Я предпочитаю называть его октокатом. –

+0

Возможно, это скорее проблема сервера, чем проблема с кодом. –

ответ

8

Вы можете попробовать sys_getloadavg(), если хотите просто показать ошибку, когда сервер находится под большой нагрузкой.

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

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

Это довольно хорошее решение. Проведите некоторое стресс-тестирование сервера, чтобы узнать, какую нагрузку он может обработать, чтобы дать вам представление о том, что такое ваш макс. – Endophage

+0

Да. Это хороший. Теперь мне интересно, как получить представление о максимальном значении? В любом случае Спасибо @ Joseph W – ptamzz

3

Если ваш веб-сервер не может получить действительный ответ от другого важного сервера, будь то ключевой веб-сервис, сервер аутентификации, сервер базы данных и т. Д., Это похоже на хорошее время для чего-то вроде кита.

1

Так как вам нужно будет искать различные вопросы, я хотел бы сказать, старт при обработке ошибок:

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

Посмотрите в документации подключения вашего поставщика баз данных (например, слишком много соединений); здесь MySQL:

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

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

Предположим, что ваш сервер может реагировать на нагрузку (и пользователь не получает тайм-аут запроса 408), это должно быть что-то обнаружить в коде, не что-то не так в пределах периметра самого сервера (например, сервер вне памяти). Вы также можете иметь другие таймауты, например, веб-службу, которая медленно реагирует или что-то еще.

Кроме того, если вы выясните, отбросьте линию в команду Facebook.

3

Это то, что я обсуждал с коллегами в прошлом. Вы не можете предсказать, когда трафик будет слишком высоким. В конце концов вы сервер просто упадет. Потенциально вы могли бы запустить сервер с страницей «fail whale» и переключиться на свой рабочий сайт. Затем, если ваш сервер упал под нагрузкой, он может автоматически вернуться на страницу «сбой».

Ваш сервер больше не может обрабатывать трафик, когда он терпит неудачу ... вот где трудность заключается в идентификации. Ответ Matt V будет работать, но вам нужно будет добавить какую-то проверку пульса, и все равно будет ручной процесс прерывания ответа «OK».

+0

В некотором смысле я не согласен; –

+2

@ Jared Farrish Как так? Не оставляйте меня таким любопытным ... – Endophage

+0

Упс. Я действительно собирался сказать, что я не думал, что Twitter показал неудачу кита из-за проблемы типа DOS (что, понятно, трудно ответить), а потому, что Ruby не был достаточно «прочным» для обработки нагрузки , Как я уже говорил, если сервер не может ответить или отвечает, но не может пройти, это сложная проблема. Но в контейнере сервера могут возникнуть другие проблемы, которые могут предоставить им «ошибку сайта», поскольку некоторое восстановление продолжается (даже если Apache отвечает, если сервер работает неправильно). Тем не менее, я ударил добавить комментарий по ошибке. –

Смежные вопросы