Log4j AsyncAppender

У нас есть высокоскоростное приложение большого объема, использующее log4j. Обычно мы использовали SyslogAppender, считая его самым легким и быстрым приложением. Но мы наблюдаем высокую загрузку ЦП из SYSLOG при большом объеме (из-за правил фильтрации в SYSLOG conf).

Вероятно, мы захотим перейти на использование FileAppender. Вопрос в том, хотим ли мы использовать это вместе с log4j AsyncAppender для удаления любых пауз из-за сброса (принудительной записи) на диск?

(Приложение очень чувствительно к задержке, поэтому мы хотим минимизировать любую задержку, которую может добавить приложение.) Также - я не совсем уверен, что SyslogAppender действительно быстрее FileAppender (но так было с тех пор, как я начал).

Любые мысли по этому поводу будут оценены.


person Sam Goldberg    schedule 08.09.2011    source источник


Ответы (1)


Я бы определенно использовал AsyncAppender.

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

Вы также можете изучить вход в JMS и другие асинхронные стратегии.

person James DW    schedule 08.09.2011
comment
Спасибо за ваш комментарий. Вроде не повредит и, наверное, поможет. - person Sam Goldberg; 09.09.2011
comment
Мы провели кучу тестов, и даже кажется, что каким-то образом стало хуже с использованием Async appender по сравнению с обычным файловым appender с немедленнымFlush = false. - person Sam Goldberg; 19.10.2011