首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多线程应用程序中登录

在多线程应用程序中登录
EN

Stack Overflow用户
提问于 2013-08-28 14:54:11
回答 4查看 694关注 0票数 0

我正在用java开发一个交易应用程序(一次处理百万个数据),它是多线程的。应用程序正在日志文件中记录消息。目前,此日志记录的性能相当低,并且占用大量CPU时间。

我想重新实现它。我谷歌了一下,发现LinkedBlockingQueue是一个选项。因为它的大小是固定的,所以不能使用arrayBlockingQueue

此外,像log4j这样的框架听起来也是很好的选择,因为它们是线程safe.But我怀疑log4j是否是多线程应用程序的一个好的性能选择。

在我的多线程应用程序中,我应该选择哪种最佳的数据结构/框架来进行日志记录?

EN

回答 4

Stack Overflow用户

发布于 2013-08-28 14:58:19

尝试log4j 2,而不是重新发明轮子...http://www.grobmeier.de/log4j-2-performance-close-to-insane-20072013.html

票数 5
EN

Stack Overflow用户

发布于 2013-08-28 15:16:45

对于高性能日志记录,我使用Java Chronicle (主要是因为它是我写的),它可以以更少的GC方式支持每秒100K - 1M的文本消息。您可以通过用锁包装它来确保它的线程安全。它不像其他记录器那样简单,因为它是较低级别的,但它是我所知的最快的。

如果您使用二进制日志记录,它可以支持每秒超过10M条消息/事件。我正在开发一个Java Chronice2.0,它的速度要快3倍。

无界队列通常是一件坏事。如果绑定队列不是您的选项,那么很可能是设计问题。如果你真的需要一个无界的,Java编年史可能是你唯一的选择,因为没有其他库真正支持以一种性能良好的方式。Log4j 2.0使用了一个有界的环形缓冲区。

票数 3
EN

Stack Overflow用户

发布于 2013-08-28 14:56:21

如果我是你,我会先试试slf4j。这只是一个外观,但您可以使用log4j2作为实现。如果这很慢,那么在此之后尝试JUL和其他日志记录框架将变得非常容易。这只是一个配置和类路径更改。

如果您尝试的每个记录器都很慢,那么您可能需要查看http://zeromq.org/。但我觉得一个伐木者应该没问题。我通常不会听到人们抱怨他们的日志框架减慢了他们的应用程序,除非他们打印出过多的调试语句。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18481192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档