Как вы управляете производительностью регистрации? - PullRequest
4 голосов
/ 22 июня 2009

У нас есть система обработки сообщений, где низкая задержка имеет решающее значение. Недавно я обнаружил, что, несмотря на то, что мы поддерживаем высокий уровень нашей системы, мы наблюдаем некоторые "выбросы". (Сообщения, которые занимают намного больше времени, чем следовало бы). Когда мы удалили протоколирование, наши системы не показывают ни одного из этих выбросов.

В настоящее время наше ведение журнала - это просто завернутый поток с некоторыми функциями уровня ведения журнала, подобными log4j (debug, fatal, debug и т.д.).

Мне было интересно, что делают другие, чтобы управлять производительностью журналирования, особенно при обработке сообщений? Как вы управляете этими действиями, связанными с вводом / выводом? Вы раздеваетесь? Вместо этого вы переходите в базы данных?

Любой совет по оптимизации регистрации приветствуется.

Примечание: я признаю, что могут быть другие проблемы с нашей системой, которые вызывают выбросы, но ради этого вопроса я заинтересован только в оптимизации журналирования, спасибо.

Также: регистрация обязательна для нашей системы.

Ответы [ 2 ]

10 голосов
/ 22 июня 2009

Полагаю, это в какой-то степени зависит от ОС.

На win32 наша подсистема регистрации просто ставит сообщения в очередь для потока регистрации, который обрабатывает дисковый ввод / вывод.

Это отделяет производительность дискового ввода-вывода от критичных ко времени потоков и дает нам хороший контроль над тем, как и когда очередь блокируется.

1 голос
/ 22 июня 2009

Подобно тому, что сказал Родди, мы также помещаем в очередь сообщения в поточно-ориентированной очереди и имеем отдельный поток с более низким приоритетом, который выполняет фактический дисковый ввод-вывод.

В фоновом потоке у нас также есть ограничение на количество сообщений, которые могут быть записаны за один раз (исключены из очереди), поэтому для чего-то большего, чем фоновый поток, мы снова переводим в спящий режим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...