2013-02-19 3 views
1

Я искал ответ об этом некоторое время. В компании, которую я работаю, мы имеем очень параллельную систему, но недавно обнаружили, что в конфигурации ведения журнала веб-сервера (Jboss) есть консольный appender. Журналы приложений также отправляются на консоль. Мы начали получать взаимоблокировки в действиях по протоколированию, большинство из них - в консоли appender (я знаю, что Log4j имеет очень неприятную ошибку sincronization, но я почти уверен, что у нас нет какого-либо метода sincronization в соответствующем коде). Еще одна вещь, основанная на том, что ИТ-ребята регулярно получают доступ к консоли с помощью шпателя, помещают паузы, чтобы проверить журналы, а затем просто закрыть окно шпатлевки.JBOSS Console Logging, рекомендуется в производственной среде?

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

Спасибо.

ответ

2

С Best practices for Performance tuning JBoss Enterprise Application Platform 5, страница 9

Выключите консоль протоколирование производства

Убавьте регистрации многословие

асинхронное протоколирование.

заявления отладки журнала Wrap с If (debugEnabled())

Я сильно рекомендую первый и последний соображения производства из-за ошибки в Log4J, который вычисляет, что для входа перед входом его, т.е. если MyClass#toString() является тяжелым , Log4J сначала вычислит это String раньше (да, он будет выполнять тяжелую операцию), а затем он проверит, должен ли быть зарегистрирован этот String (довольно плохо, действительно =).

Кроме того, скажите IT-парням, чтобы использовать команду less при проверке файлов журнала, чтобы не блокировать файлы, не проверяйте консоль напрямую =. Эта команда работает в Linux, если ваш сервер находится в среде Unix, команда будет tail (на основе комментария @ Toni).


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

+0

Привет, THX для вашего ответа. Я уже принял во внимание этот документ, но мне нужно доказать, что использование консоли в производстве может привести к ситуации с мертвой блокировкой. Режим отладки включен, так что это довольно тяжелая запись на консоли. Еще раз спасибо, тем меньше команда будет действительно полезна! – yagamipaul

+2

Если вы находитесь в среде UNIX, части из команды less, мы используем команду «tail»: например. «tail -f server.log», он постоянно показывает новые изменения, произведенные в файле. – Toni

+0

Команда tail также включена во все основные дистрибутивы Linux. :-) Он используется для отображения последней части файла (и с параметром -f, который используется для вывода новых данных по мере роста файла). – Toni

Смежные вопросы