面对一个大型多线程系统的日志文件(一般是 100M~2G 大小),有哪些工具适合查看、分析呢?
因为并发度较高,各个线程的日志混在一块了,不容易分析。形如:
<timestamp> <thread-id> <msg>
如上,可以看作一维(时间维度)的日志,同一个线程连续运行的日志可能被其它线程的日志给打断了,并发度高时,日志会非常混乱。
有没有这种工具,可以达到类似如下效果:
<timestamp1> <tid-1>___________________<msg>
<timestamp2> <tid-1>___________________<msg>
<timestamp3> ________<tid-2>___________<msg>
<timestamp4> ________<tid-2>___________<msg>
<timestamp5> _________________<tid-3>__<msg>
<timestamp6> ________<tid-2>___________<msg>
<timestamp7> <tid-1>___________________<msg>
<timestamp8> <tid-1>___________________<msg>
如上效果,可以比较清晰地展示出各个线程在不同时刻的运行状况以及相互关系(暂不考虑日志 IO 耗时对程序逻辑的微妙影响)。
首先,系统会运行多个(百、千级别)且数量不定的线程数,单纯如上所述显示的方法,屏幕不够宽!
其次,数据量较大时,如何高效地处理,也是一个蛋疼的问题,如果需要支持交互(例如临时屏蔽线程 tid=3 的日志),性能可能是瓶颈。
以上只是我的一点看法、一个小的遐想,肯定还有不完善的地方,不知道大家有没有什么经验、工具可以分享,谢谢。
1
li24361 2015-09-17 11:25:37 +08:00
log 配置的时候,输出线程名称或者 id
grep 线程明或者 id log 文件 >thread1.log 这样可以不 |
2
goool 2015-09-17 12:27:28 +08:00
有时候需要另一个维度,去展示各种线程是怎样在同一个“任务”上合作的。
怎样定义“任务”和“任务 id ”与你的程序功能有关。 |