Tuesday, 29 April 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

Write on: 15:59 | 13 comments | | tags: , , , | permalink |
Add post to:   Delicious Reddit Slashdot Digg Technorati Google


Add comment

Pingbacks

procure anavar @www.roids.online 27.02.2017 20:53
bodybuilding peptides for sale @www.steroidsforsale.biz 28.01.2017 15:37
for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale HGH for sale H

Comments

sdfgh153 29.04.2008 20:40

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

reply
Serge 5.05.2008 19:18

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

reply
Kirill A. Korinskiy 5.05.2008 23:18

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

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

reply

Comment form for «Nginx: а сколько у нас запросов в секунду?»

Required. 30 chars of fewer.

Required.

Serge 6.05.2008 5:02

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

reply
Kirill A. Korinskiy 6.05.2008 10:11

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

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

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

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

reply
Serge 6.05.2008 16:50

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

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

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

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

reply
Kirill A. Korinskiy 6.05.2008 20:13

Напиши в config’е:

limit_zone   one  $binary_remote_addr  1s;
limit_conn   one  25;

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

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

reply
ччч 16.10.2008 3:36

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

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

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

reply
Kirill A. Korinskiy 18.10.2008 16:40

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

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

reply
jaydee 7.03.2009 1:35

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

reply
Kirill A. Korinskiy 7.03.2009 2:03

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

reply
jaydee 7.03.2009 4:08

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

reply
Kirill A. Korinskiy 9.03.2009 16:56

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

reply