搜索
Java日志分析的方案?
高洛峰
高洛峰 2016-10-27 16:25:47
[Java讨论组]

Spring+MyBatis+SNMP+Postgresql的监控系统,需要处理日志里的交易信息,日志形如:

----交易开始----
(交易信息)
----交易结束----

日志按小时分文件。我的需求是5分钟扫一次日志,把交易成功数汇总,把失败交易写入监控数据库,目前我是把log文件映射为数据库表,用for循环每次取一个交易的信息解析,尝试了一下每个log里有5K个交易,5分钟别说解析完,就连映射到数据库表的时间都不够。映射用的是PG创建外部表的功能:

CREATE SERVER pglog FOREIGN DATA WRAPPER file_fdw;
CREATE FOREIGN TABLE pglog SERVER pglog OPTIONS (filename 'xxxx', format...;

在不上内存数据库、NoSQL的前提下,有没有最简单的方案能提高日志分析的速度?或者说我需要放弃映射为数据库表这条路,走别的路?

PS:由于之前使用外部表创建视图来做查询,不论映射速度还是查询速度都比较慢,现在改为创建表来保存外部表的信息,速度提升明显,先尝试一下看看,另外谢谢 @kevinz 的提醒,由于每次分析时会记录行号,可以在后续分析时跳过上次分析的行,这也是一种缩减时间的方式。继续期待更优的方案:)


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
三叔

记录上次文件解析的位置。第二次解析日志时使用InputStream.skip跳过可避免重复分析数据

一个线程解析日志将解析的数据存放在内存中,由额外的线程专门处理数据(这样解析的速度会很快5K的数据应该也是秒级的)


热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号