Pull to refresh

Comments 21

SQLite? Закапывайте. Это ж лок на локе и локом погоняет.
Но сорцы погляжу, интересно.
Ну, не стоит сразу закапывать, ибо sqlite не так уж и плоха, она проста в обращении, не требует дополнительных телодвижений от пользователя. + ко всему есть планы прикрутить к модулю сохранение в postgres и mysql. но это пока планы.
Было бы неплохо, если бы можно было самому написать нужный драйвер. Например для Mongo или ещё чего. Но вообще начинание неплохое.
А ещё лучше чтобы была возможность в Log Format нужные значения, и тем самым разделить проект на две части: логгер и анализатор.
Например:
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %T %{perf_cpu} %{perf_memory}" performance
И для нужных хостов
CustomLog /tmp/perf.log performance

Так и свой анализатор можно сделать, и позволить администратору написать свой.
И ещё добавить в статистику cpu seconds, то есть процессорное время, а не процент.
А здесь — большое спасибо за совет, внесу это в ближайшее время
Да. Здесь вы правы насчет возможности логирования еще и в лог(опциональный выбор). Насчет анализатора, впринципе, я и хочу написать, что-то наподобие phpmyadmin, который будет разбирать накопленную информацию. Но определенный функционал по анализу, все же хочу в модуле оставить, чтоб после минимальной установки у пользователя уже была возможность анализировать, а потом по его желанию, если он хочет — то ставит дополнительные скрипты анализа.
o'rly? кто еще нормально сервает AJP?
UFO just landed and posted this here
а подскажите пожалуйста, как собирать статистику по отдельным скриптам на более низком уровне?
Небольшое замечание по оформлению поста, на правах зануды

Хост приведенный в примере на картинке — абсолютно тестовый

это очевидно, ведь это хост example.com
Согласно RFC2606 если вы хотите указать просто пример какого-нибудь абстрактного хоста, то вам нужно использовать домен example.com

test.test.test/user-status,

А вот это уже ошибко, потому что согласно тому же RFC2606 использовать доменные имена из зоны .test рекомендуется для тестирования вещей, связанных с dns

Для статей и документаций рекомендуется использовать доменные имена из зоны .example или example.com

ошибко ошибка конечно же :)
Спасибо за рекомендации, учту на будущее
А вы не пробовали тестировать с помощью Apache benchmark насколько сильно включение вашего модуля сказывается на производительности сайта?

Т.е. насколько падает число запросов в секунду которые апач может пережевать при включении статистики?
Ну как бы на производительность отдельного сайта он особо не влияет, т.к. все что делает модуль по запросу — это только через сокет демону посылает необходимые сведения, на этом все, запрос далее выполняется как обычно. А вот на сервер вцелом по IO может нагрузка увеличиться из-за того, что демон после прекращения запроса будет записывать данные в базу. На текущий момент модуль может обрабатывать одновременно ограниченное чило запросов, при достижении предела он прекращает прием новых а просто занимается завершением обработки уже принятых, но при каждом запросе сверх лимита, он сообщает в лог сервера, о том, что текущего лимита по одновременной обработке не хватает и просит увеличить число. На те запросы, которые не могут быть обработаны демоном это никак не влияет, они выполняются как и обычно, но просто не отслеживаются.
Понятно, спасибо за ответ.
Интересно было бы посмотреть на бенчмарки когда доведете до состояния конфетки :)
ab использовал пока что только в тестах на стрессоустойчивость. А вот временные характеристики пока не снимал — каюсь. Но обещаю все это проделать, как доведу его до состояния «конфетки» :)
К сожалению со временем производительность будет падать. Так как SQLite имеет очень плохую тенденцию разрастаться и, впоследствии, все запросы селект, апдейта и инсерта начинают крайне медленно отрабатывать.
При относительно высокой нагрузке такие базы придется менять раз в день(Это, кстати, повод подумать на эту тему).

По поводу нагрузки на сервер и времени запроса интересно модуль держит постоянное соежинение с демоном или переподключается к нему каждый раз? Через порт или юникссокет?

Абсолютно верное замечание, но на такой случай в модуле имеется подрезание истории. Т.е. мне на практике более 30 дней истории не требовалось. Поэтому демон каждые три часа проводит сканирование базы и удаляет старые записи. А по поводу интенсивной нагрузки и базы SQLite, я выложил 0.2 версию модуля, где имеется возможность сохранять по выбору: 1) в текстовый лог(с заданным форматом); 2) SQLite базу и 3) MySQL база данных. Т.е для неинтенсивных серверов можно использовать SQLite, а для более нагруженных MySQL или лог. Плюс еще в новой версии модуля организована поддержка Apache+mod_ruid2(это был первый шажок в поддержке безопасного запуска скриптов сайта). Насчет соединений: при каждом запросе происходит подключение к демону через unix-сокет, по окончанию обработки запроса соединение разрывается.
По поводу доработанного модуля я готовлю новую статью, где постараюсь прикрепить исследование нагрузки на сервер при подключении модуля, но быстро ее подготовить не получается :(. Если кто захочет модуль протестировать и обнаружит баги пишите — на сайте модуля организована поддержка :)
Sign up to leave a comment.

Articles