SQLMon для Yii
Одной из вещей, которых мне очень не хватало при разработке сайтов на Yii — нормального отображения всех запросов к базе данных, что дало бы возможность их последующего анализа.
Ситуацию частично исправило расширение под названием Yii DB profiler. Но остались некоторые неудобства:
- Отображение запросов в порядке убывания времени выполнения — в принципе, это дело вкуса: при таком порядке сразу видны проблемные запросы. С другой стороны, лично мне более привычен хронологический порядок — так чётче прослеживается логика работы;
- Prepared statements. Это просто здорово, но если повторять запрос в phpMyAdmin (например, если интересует план выполнения запроса), бывает очень муторно заменять все связанные значения. Например, для запросов вида
[-]View Code MySQLзаменять всеSELECT 't'."object_id" AS "t0_c0", 't'."ymd" AS "t0_c1", 't'."black" AS "t0_c2", 't'."brown" AS "t0_c3", 't'."yellow" AS "t0_c4",
't'."neutral" AS "t0_c5", 't'."white" AS "t0_c6", 't'."unknown" AS "t0_c7", 't'."error" AS "t0_c8", 'object'."object" AS "t1_c2",
'object'."id" AS "t1_c0"
FROM 'dnsbl_summary' 't'
LEFT OUTER JOIN 'objects' 'object' ON ('t'."object_id"='object'."id")
WHERE (((black > 0) OR (brown > 0)) AND
(((((((((ymd=:ycp0) AND (black>:ycp1)) AND (brown=:ycp2)) AND (yellow=:ycp3)) AND
(neutral>:ycp4)) AND (white>:ycp5)) AND (unknown=:ycp6)) AND (black>:ycp7)) AND
(error=:ycp8))) AND (object.enabled = 1)
LIMIT 50:ycpXXXна их значения немного муторно. В общем случае здесь вряд ли можно что-то сделать — заполнители параметров могут быть любыми (и даже позиционными), поэтому тупое использованиеstr_replaceможет наделать делов.
Лично мне список запросов нужен обычно только для двух вещей:
- Оценка работы механизмов кэширования;
- Оценка плана выполнения запроса, составленная оптимизатором.
Первое обычно не критично (зачастую достаточно посмотреть на количество запросов), а вот второе позволяет выявить многие будущие проблемы с производительностью заранее.
В результате, взяв за основу плагин Александра, я портировал SQLMon на Yii.
Далее »
Ноя
2011
Подсчёт трафика в nginx: часть 2
В статье «Подсчёт трафика в nginx» я приводил один из возможных вариантов живого подсчёта трафика в nginx.
У прошлого решения есть недостатки:
- используется три лишних процесса;
- используется много файловых дескрипторов (зависит от количества виртуальных хостов).
Я на днях нашёл еще один вариант. Далее »
Автор: Vladimir, опубликовано в: Linux, MySQL, nginx, Администрирование, комментариев: 7Фев
2009
Подсчет трафика в nginx
Постановка задачи: есть Linux-сервер, на котором живёт сотня-другая виртуальных хостов. Сервер работает под управлением nginx. Нужно реализовать подсчет трафика с отображением «живой» статистики. Далее »
Автор: Vladimir, опубликовано в: Linux, MySQL, nginx, Администрирование, комментариев: 9Янв
2009
Простой анализатор логов Postfix
При создании сайтов, занимающихся email-маркетингом, полезно анализировать логи почтового сервера, например, для нахождения адресов, генерирующих hard bounce (перманентная ошибка доставки). Такие адреса нужно удалять из списка рассылки. Во-первых, для того, чтобы не нагружать сервер адресата, а во-вторых, чтобы не попасть в блок- или спамлист. Далее »
Автор: Vladimir, опубликовано в: Linux, комментариев: 3Дек
2008

Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.

