Каковы хорошие способы создания статистики в реальном времени для высоконагруженных веб-серверов? - PullRequest
1 голос
/ 07 сентября 2011

Допустим, у меня есть несколько веб-серверов, каждый из которых обслуживает 100 запросов / с, и я хочу видеть статистику в реальном времени, например:

  • Частота запросов за последние 5 с, 60 с, 5 мин и т. Д.
  • Количество уникальных пользователей, увиденных снова за временное окно

Или, вообще, для группы событий с метками времени, я хочу видеть производную статистику в реальном времени - как лучше всего это сделать?

Я рассмотрел вопрос о том, чтобы каждый запрос GET где-то обновлял глобальный счетчик, а затем выполнял выборку с различными интервалами, но, как я вижу, с учетом частоты событий трудно получить достаточно быстрый распределенный счетчик.

Любые идеи приветствуются!

Добавлено: Серверы Linux работают под управлением Apache / mod_wsgi со стеком Python (Django).Добавлено: чтобы дать представление о скорости событий, для которых я хочу отслеживать статистику, они идут со скоростью более 10 000 событий / с.Даже увеличение распределенного счетчика с такой скоростью является проблемой.

Ответы [ 4 ]

1 голос
/ 09 сентября 2011

Возможно, вы захотите помочь нам опробовать бета-версию нашего агента для мониторинга производительности приложений в веб-приложениях Python.

http://newrelic.com

Это больше связано с производительностью приложения, а не только с веб-сервером, но поскольку любые узкие места не являются веб-сервером, это будет ваше приложение, которое в любом случае будет более полезным.

Отказ от ответственности. Я работаю на New Relic, и это проект, над которым я работаю. Это платный продукт, но бета-версия означает, что на данный момент он бесплатный со всеми функциями. Позже, когда это изменится, если вы не захотите за него платить, это все равно уровень подписки Lite, который бесплатен и дает вам базовые отчеты о веб-показателях, которые по-прежнему охватывают некоторые из ваших целей. В любом случае, сейчас будет отличная возможность использовать ее для отладки вашей производительности, пока вы можете.

1 голос
/ 09 сентября 2011

Посмотрите на использование WebSockets, их накладные расходы намного меньше, чем HTTP-запросы, они очень хорошо подходят для веб-приложений реального времени.См. http://nodeknockout.com/ для примеров веб-сокетов на основе Node.

http://en.wikipedia.org/wiki/WebSocket

Вам потребуется запустить демон, если вы хотите запустить его на своем сервере apache.

Также взгляните на: http://kaazing.com/, если вы не хотите меньше беспокоиться, но готовы раскошелиться на некоторые деньги.

http://websocket.org/img/poll-ws-compare.gif

1 голос
/ 09 сентября 2011

Практически все хорошие серверы предоставляют такую ​​функциональность из коробки. Например, Apache имеет модуль mod_status, а Glassfish поддерживает JMX. Кроме того, существует множество коммерческих пакетов для мониторинга кластеров, таких как Hyperic и Zenoss.

Какой веб-сервер или сервер приложений вы используете? Трудно найти решение без этой информации.

0 голосов
/ 09 сентября 2011

На стороне Windows, Монитор производительности - это инструмент, который вы должны исследовать.

Как сказал Джаред О'Коннор , вы должны точно указать, какой веб-серверВы хотите контролировать.

...