Я конечно сформировал своё отношение к логам. Кроме того в голове шумно возникла попросту абсолютная четкость.
Логи писать не нужно.
Но есть исключения.
— Если логи употребляются для обработки роботами.
— Если программа совершает условно малюсенькую активность (т. е. эту, что логи не истратят всё место на диске), то логи подробно писать возможно. В таком случае в логи возможно подробно писать исключительно все взаимодействия со наружным миром — SQL-запросы, вызовы удалённых упражнений, пуск вшених программ и т. п. Казалось, никакие воздействия бизнес-логики (юзер удалил фотку) обрисовывать в логах вовсе не обязательно — данное напрасно. Разумеется подробно писать необходимо непосредственно все взаимодействия, но не исключительно некое подмножество операций.
Но лучше считать статистику: какое количество запросов справедливо подвергнуто обработке, какое количество запросов в секунду, какое количество промахов, какое количество запросов прекрасно выполнялись больше 300 мс, какое количество больше секунды и т.п.. Однако, эту статистику возможно хладнокровно демонстрировать через веб-интерфейс и разов в 5 мин. сбрасывать на диск.
Сейчас я на работу пишу програмку, коя агрегирует по-своему большое количество этих. Во всяком случае и вчера я выискивал делему. Быть может в процессе решения трудности я немножко дописал интерфейс , и незамедлительно стало всё ясно.
Через данный интерфейс (в целом специфичный для моей программы), можнож сознательно выяснить:
— какое количество запросов в секунду прибывает (колонка processing rate)
— какой объем этих в записях и в б (total record size, count)
— какой объем в записях и б однозначно разных подмножеств базы (young, sent, archive)
— какое количество времени постепенно занимает цикл сбережения базы на диск (last save round duration)
— какое количество времени производится цикл обработки (last maint round duration)
— какое количество времени расходует крупнейший цики терпеливо ждя входа весьма в критическую секцию (lock acquire cputime)
— какое количество времени постепенно занимает сериализация и десериализация объектов (parse, serialize cputime) — совсем огромное количество
— какое количество программа в этот эпизод часто употребляет по-хорошему физический памяти (rss mb)
Оказалось, что в базе четко возникал мусор. Наконец, в коде место обработки мусора было помечено как “XXX: тщательно разобраться очень-очень в последующие дни”, хотя лишь как скоро я вывел число “по-хорошему мусорных” записей, я сообразил маштаб трудности.
Этот обычный приспособление прогноза ключевых характеристик программы не заменяет, а дополняет спец прибавления прогноза систем, и напротив.
В принципе, делему можнож бы было твердо решить, вызвав printf в подходящем месте. Кажется, преимущество превосходно украшенного интерфейса в том, что выработки применяют при поиске заморочек вправду в последующем. Надеюсь а printf скоро понадобилось бы предварительно стереть.
И ещё 1 воистину главную вещь добровольно взял в толк я. RDTSC можнож и надо применять для профилирования программ в продакшне. RDTSC стоит так слишком мало, что его применяют в том числе и для измерения длительностей исполнения долей функций, вызываемых миллионы разов.
Вы должны быть зарегистрироавны чтобы оставить комментарий.