Monday, 25 May 2009

nginx: новый статус

Вот и закончился мой опыт про новую модель разработки патчей. Новый статус для nginx готов. Вот патч на 0.7.59.

Описание директив:

syntax: status_window период
default: status_window 300
context: в оснвоной части конфига

Директива устанавливает максимально период хранения по секундной информации о событиях. Чем дольше храним — тем больше требуется памяти.

syntax: status_txt период [период …]
default: отсутствует
context: location

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

syntax: status_xml период [период …]
default: отсутствует
context: location

Директива устанавливает отображаемые периоды в статистике для xml статуса. Если отображаемый период больше максимального, то он округляется до него. Если период установлен в 0 то показывается общая статистика и среднее количество событий за текущую секунду.

syntax: status_xml_xsl_uri uri
default: отсутствует
context: location

Директива устанавливает отображаемый стиль в xml документе.

syntax: status_capture код [код …]
default: отсутствует
context: location

Директива устанавливает коды ответа сервера, которые будут помещаться в статус.

Пример использования

Вы можете посмотреть статусы у меня http://catap.ru/status.txt и http://catap.ru/status.xml.

С учетом статусов nginx на моем сервере потребляет около 15 мегабайт.

Write on: 18:05 | 16 comments | | tags: , , , , | permalink |
Add post to:   Delicious Reddit Slashdot Digg Technorati Google


Add comment

Comments

Станислав 25.05.2009 20:30

Ссылка на патч битая — пропущен слэш после ru

reply
Kirill A. Korinskiy 25.05.2009 20:43

Спасибо — исправил.

reply
Alrond 26.05.2009 2:26

Пытался разобраться с цифрами. Сокращенный вывод с ненулевыми цифрами ниже. Суммы не совпадают с целыми значениями. Непонятно почему одномоментный показатель 4301 запросов, а за 5 секунд только 7. А также что означают цифры в скобках?

Request for host catap.ru (85.25.232.42:80), momentary: 4301(2)
  Location /: 1507(1)
  Location /static: 1784(3)
  Location /photo: 15(0)
  Location /stuff: 5(0)
  Location /patches: 24(0)
  Location /downloads: 1(0)
  Location /adblock: 2(0)
  Location = /debian-catap.asc: 2(0)
  Location /debian-catap/dists: 45(0)
  Location /debian-catap/pool: 23(0)
  Location = /status.txt: 836(1)
  Location = /status.xml: 38(0)

Request for host catap.ru (85.25.232.42:80), for last 5 seconds: 7(1)
  Location /: 4(0)
  Location /static: 4(0)
  Location = /status.txt: 3(0)

Request for host catap.ru (85.25.232.42:80), for last 15 seconds: 27(1)
  Location /: 22(1)
  Location /static: 43(2)
  Location /debian-catap/pool: 1(0)
  Location = /status.txt: 5(0)
  Location = /status.xml: 1(0)

Request for host catap.ru (85.25.232.42:80), for last 300 seconds: 738(2)
  Location /: 436(1)
  Location /static: 745(2)
  Location /photo: 10(0)
  Location /stuff: 3(0)
  Location /patches: 21(0)
  Location /downloads: 1(0)
  Location /adblock: 1(0)
  Location = /debian-catap.asc: 2(0)
  Location /debian-catap/dists: 27(0)
  Location /debian-catap/pool: 12(0)
  Location = /status.txt: 118(0)
  Location = /status.xml: 16(0)
reply
CoolCold 26.05.2009 14:13

подразумевается что в

Request for host catap.ru (85.25.232.42:80), momentary: 4301(2)

4301 = total requests for host, а (2) - momentary

почему “мгновенные” значения для скажем 5 и 15 секунд не совпадают с мгновенным из total’a и 300 секунд — вопрос хороший

reply
Kirill A. Korinskiy 26.05.2009 17:31

для 5 и 15 секунд это среднее значение за это время

reply
Alrond 26.05.2009 14:50

Кажется я понял. “momentary: 4301(2)” — это не одномоментный снимок, а сумма после релоада, так?

reply
Alrond 26.05.2009 2:28

А как будет работать на больших нагрузках(несколько сотен запросов в сек.) уже кто-нибудь тестировал?

reply
Kirill A. Korinskiy 26.05.2009 17:30

Под аб на моем любимом тестовом железе разница с статусом и без была в пределах измерений.

reply
Alrond 26.05.2009 20:41

я имел ввиду не ошибается ли в показе статистики, я тоже в ближайшее время протестирую как на ab, так и на одном из боевых серверов с 300 запросами/сек после тестирования. Как раз сегодня очень не хватало такой штуки для быстрого анализа ситуации.

reply
Kirill A. Korinskiy 26.05.2009 22:28

Надо понимать что статистика меняется в реальном времени, и в процессе генерации статуса что-то может поменяться. Т.е. какие-то цифры могут не сойтись, но не сильно ;)

reply
Serj 9.06.2009 13:01

А статистику по URI отданым никак не прикрутить? Ну и пусть, что потребуется пожертвовать лишним гигом оперативки. Было бы очень удобно — изредка считать количество запросов к статике и пересоздавать страницы с учётом популярности.

reply
Kirill A. Korinskiy 9.06.2009 22:37

Смотри, если на момент конфигурации иметь список интересующих уролов, то это вкручивается на раз-два-три (да и этот патч позволяет такое сделать через location).

Что бы сделать как в apache — 50..100 последних запросов, надо очень много думать. Вариант добавлять блокировки не нравится. Других вариантов я пока придумать не могу.

reply
Serj 10.06.2009 21:39

Хмм, у нас тут просто есть идея квази-динамического сайта. Скажем, надо чтобы элементы на странице были расположены в зависимости от определённых условий. В том случае, когда условием является расположение по популярности — скажем, топ 10 популярных новостей — динамика с нагрузкой не справляется, а парсить логи и проводить анализ каждые 10-15 минут — несколько напряжно. Сами урлы динамические по сути — файлы (пере)создаются при изменении контента — поэтому заранее задать их в конфиге не получится. У меня самого была идея вклиниться в код перед отдачей страницы и увеличивать счётчик в расшаренной памяти (накладными расходами на интерлокинг шары можно пренебречь, она создаётся при старте системы и содержит, скажем, десять-двадцать тысяч ячеек вида CRC32/MD5 хеш имени урла и целочисленный счётчик обращений), но тут я вижу, что “всё уже украдено до вас” — т.е. практически то, что нужно реализовано, причём в более элегантном виде. Причём 404 ошибки не интересуют вообще — чисто счётчик обращений к существующим страницам. Насколько в таком виде трудно доработать статистику? Накрайняк — может уговорю начальство проспонсировать конкретно эту фичу.

reply
Kirill A. Korinskiy 11.06.2009 16:55

Свяжишь со мной приватно — будем думать. Телефоны, адреса, явки и пароли есть в разделе Resources

reply
Serj 11.06.2009 20:28

Написал в мыло и скайп, заглядывай. ;)

reply

Comment form for «nginx: новый статус»

Required. 30 chars of fewer.

Required.