Понедельник, 25 Май 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 мегабайт.
Комментарии
Ссылка на патч битая — пропущен слэш после ru
Спасибо — исправил.
Пытался разобраться с цифрами. Сокращенный вывод с ненулевыми цифрами ниже. Суммы не совпадают с целыми значениями. Непонятно почему одномоментный показатель 4301 запросов, а за 5 секунд только 7. А также что означают цифры в скобках?
подразумевается что в
4301 = total requests for host, а (2) - momentary
почему “мгновенные” значения для скажем 5 и 15 секунд не совпадают с мгновенным из total’a и 300 секунд — вопрос хороший
для 5 и 15 секунд это среднее значение за это время
Кажется я понял. “momentary: 4301(2)” — это не одномоментный снимок, а сумма после релоада, так?
Да
А как будет работать на больших нагрузках(несколько сотен запросов в сек.) уже кто-нибудь тестировал?
Под аб на моем любимом тестовом железе разница с статусом и без была в пределах измерений.
я имел ввиду не ошибается ли в показе статистики, я тоже в ближайшее время протестирую как на ab, так и на одном из боевых серверов с 300 запросами/сек после тестирования. Как раз сегодня очень не хватало такой штуки для быстрого анализа ситуации.
Надо понимать что статистика меняется в реальном времени, и в процессе генерации статуса что-то может поменяться. Т.е. какие-то цифры могут не сойтись, но не сильно ;)
А статистику по URI отданым никак не прикрутить? Ну и пусть, что потребуется пожертвовать лишним гигом оперативки. Было бы очень удобно — изредка считать количество запросов к статике и пересоздавать страницы с учётом популярности.
Смотри, если на момент конфигурации иметь список интересующих уролов, то это вкручивается на раз-два-три (да и этот патч позволяет такое сделать через location).
Что бы сделать как в apache — 50..100 последних запросов, надо очень много думать. Вариант добавлять блокировки не нравится. Других вариантов я пока придумать не могу.
Хмм, у нас тут просто есть идея квази-динамического сайта. Скажем, надо чтобы элементы на странице были расположены в зависимости от определённых условий. В том случае, когда условием является расположение по популярности — скажем, топ 10 популярных новостей — динамика с нагрузкой не справляется, а парсить логи и проводить анализ каждые 10-15 минут — несколько напряжно. Сами урлы динамические по сути — файлы (пере)создаются при изменении контента — поэтому заранее задать их в конфиге не получится. У меня самого была идея вклиниться в код перед отдачей страницы и увеличивать счётчик в расшаренной памяти (накладными расходами на интерлокинг шары можно пренебречь, она создаётся при старте системы и содержит, скажем, десять-двадцать тысяч ячеек вида CRC32/MD5 хеш имени урла и целочисленный счётчик обращений), но тут я вижу, что “всё уже украдено до вас” — т.е. практически то, что нужно реализовано, причём в более элегантном виде. Причём 404 ошибки не интересуют вообще — чисто счётчик обращений к существующим страницам. Насколько в таком виде трудно доработать статистику? Накрайняк — может уговорю начальство проспонсировать конкретно эту фичу.
Форма комментирования для «nginx: новый статус»
Свяжишь со мной приватно — будем думать. Телефоны, адреса, явки и пароли есть в разделе Resources
Написал в мыло и скайп, заглядывай. ;)