Вторник, 29 Апрель 2008

Nginx: а сколько у нас запросов в секунду?

Статистика nginx’а хороша. Она даже дает какие‑то знания. Но понять сколько запросов в секунду у нас идет из нее, нет, возможно, но не просто.

Этот patch добавляет в статистику одну строчку “Request/sec”, которая и показывает сей жизненно важный параметр.

Обновляются данные не чаще чем раз в секунду.

Пример статистики после наложения patch:

Active connections: 15 
server accepts handled requests
 90087 90087 90095 
Reading: 8 Writing: 7 Waiting: 0 
Request/sec: 8924

Написано в: 15:59 | 13 комментариев | | теги: , , , | постоянная ссылка |
Добавить пост в:   Delicious Reddit Slashdot Digg Technorati Google


Последние комментарии

Комментарии

sdfgh153 29.04.2008 20:40

Это, кстати, на самом деле жызненно. Очень приятно в отчотах начальству вытягивать пипи… хвастаться нагрузкой (: Когда я вырасту и у меня будут усы, я обязательно этим воспользуюсь.

ответить
Serge 5.05.2008 19:18

Доброго Кирилл, было бы интереснее, если патч показывал сколько реквестов поступает с каждого ip-шника за секунду :)

ответить
Kirill A. Korinskiy 5.05.2008 23:18

Могу я поинтересоваться смыслом?

Т.е. Request/sec для конкретного location я применение вижу и мне оно интересно, а вот конкретного ip’шника…

ответить
Serge 6.05.2008 5:02

Ну, например, чтобы в дальнейшем можно было это использовать для ограничения кол-ва запросов в секунду с определенного(-ных) ip. Однако идея для конкретного локейшена тоже интересна, я как то не подумал о такой реализации. :)

ответить
Kirill A. Korinskiy 6.05.2008 10:11

Понимаешь ли, такая статистика может писаться, но ее проще считать анализируя access.log.

Почему не стоит делать этого на уровне nginx’а:

  • Размер статистики будет стремится к всему диапазону ip адресов.
  • Для большей части реальной системы этот показатель будет на уровне 5 запросов в секунду. Т.е. я не вижу причин почему тут будут скачки.
  • Статистику придется нудно и долго крутить. Т.е. нельзя будет открыть status и посмотреть глазами.

Вообще написать такой модуль можно, но тогда нужно будет в config’е указывать диапазоны для чего считать. Но зачем мне все еще не понятно :)

ответить
Serge 6.05.2008 16:50

Но зачем мне все еще не понятно :)

я как бы не уточнил.. сорри. Да, согласен, в stub_status этого совершенно не нужно.

Однако, для использования в nginx это было бы удобно. Для чего ? Обьясню. Есть у меня подопечный сервер, который почти постоянно боты донимают запросами. Причем кол-во соединений с каждого ip адреса до 50 (бывает до сотни), а вот запросов с каждого такого ip приходит от 50 до ~2000 за минуту. Вот собственно и хочется ограничить особо настойчивых…

Надеюсь, мысль я изложил более-менее вразумительно :)

ответить
Kirill A. Korinskiy 6.05.2008 20:13

Напиши в config’е:

limit_zone   one  $binary_remote_addr  1s;
limit_conn   one  25;

Если у кого-то будет больше 25 соеденений в секунду, ему скажут 503.

За подробностями сюда

ответить
ччч 16.10.2008 3:36

Ничего подобного ;)

Это не работает на мелкой статике в следствие логики событийных систем и Сысоев, зная об этом не спешит это исправить.

А не работает потому, что например после вызова epoll/kqueue в очереди скажем 500 коннектов от одного IP. nginx при обработке каждого соединения отправляет ему данные и закрывает коннект уменьшая счетчик — таким образом лимит никогда не будет достигнут и соответственно все 500 соединений в очереди будут обработаны :)

ответить
Kirill A. Korinskiy 18.10.2008 16:40

Какая-то софистика, честно.

Вы считаете что он смотрит раз в 1 секунду?

ответить
jaydee 7.03.2009 1:35

Что-то оно не хочет накатываться на 0.7.39…

ответить
Kirill A. Korinskiy 7.03.2009 2:03

Там простой конфликт. Вам сделать отдельный patch?

ответить
jaydee 7.03.2009 4:08

Если можно. Что-то мне подсказывает, что я не силен в Ц, и сам больше сломаю, чем починю. Кстати, если RPS будет еще и после патча “captures in regex locations” работать, то вообще супер. Хотя, если верить во включение CiRL в, скажем, 7.40, то может быть стоит подождать этой версии.

ответить
Kirill A. Korinskiy 9.03.2009 16:56

Как временное решение, вы можете взять из git мой репозиторий в котором есть этот патч. Сейчас там 0.7.40. Брать отсюда git://catap.ru/nginx/catap.git

ответить

Форма комментирования для «Nginx: а сколько у нас запросов в секунду?»

Обязательное поле. Не больше 30 символов.

Обязательное поле