Rip*_*ips 12 java performance asynchronous log4j jboss5.x
现在在我的应用程序中,在某些时候我们将一些重要的东西记录到日志文件中.
基本上只针对日志记录,我们正在创建可用数据的JSON,然后登录到日志文件.这是以JSON格式记录数据的业务要求.
现在从可用数据创建JSON然后记录到FILE会花费大量时间并影响原始请求返回时间.现在的想法是改善引用.
我们讨论的一件事是使用创建线程池
Executors.newSingleThreadExecutor()
Run Code Online (Sandbox Code Playgroud)
在我们的代码中,然后将任务提交给它,将数据转换为JSON和后续日志记录.
这是一个很好的方法吗?由于我们正在管理线程池本身,是否会产生一些问题?
如果有人可以分享更好的解决方案,我将不胜 在某种程度上使用Log4j.我试图使用AsyncAppender但没有达到任何预期的结果.我们使用的是EJB 3,Jboss 5.0,Log4j,java6.
我相信你在使用单独的线程池进行日志记录方面处于正确的轨道上.在许多产品中,您将看到异步日志记录功能.使用与请求线程不同的线程累积日志并将其推送到日志文件.特别是在生产环境中,数百万的传入请求和响应时间需要少于几秒.您无法负担任何诸如记录以减慢系统速度的任何事情.因此,使用的方法是在内存缓冲区中添加日志,并以合理大小的块异步推送它们.
使用线程池进行日志记录时需要注意的事项 由于多个线程将处理日志文件和内存日志缓冲区,因此需要注意日志记录.您需要在FIFO类型的缓冲区中添加日志,以确保在按时间戳排序的日志文件中打印日志.还要确保文件访问是同步的,并且您不会遇到日志文件全部颠倒或混乱的情况.
归档时间: |
|
查看次数: |
14525 次 |
最近记录: |