有哪些适合查看或分析多线程日志的工具?

2015-09-17 09:53:06 +08:00
 abccba

面对一个大型多线程系统的日志文件(一般是 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 的日志),性能可能是瓶颈。

以上只是我的一点看法、一个小的遐想,肯定还有不完善的地方,不知道大家有没有什么经验、工具可以分享,谢谢。

3367 次点击
所在节点    编程
3 条回复
li24361
2015-09-17 11:25:37 +08:00
log 配置的时候,输出线程名称或者 id
grep 线程明或者 id log 文件 >thread1.log
这样可以不
goool
2015-09-17 12:27:28 +08:00
有时候需要另一个维度,去展示各种线程是怎样在同一个“任务”上合作的。

怎样定义“任务”和“任务 id ”与你的程序功能有关。
abccba
2015-09-17 18:35:44 +08:00
@li24361

主要是欠缺全局的视图,如“图” 2 所示, grep 不能反应在同一段时间内各个线程的状况。


@goool
是,所以我最后还说,有啥经验、工具都可以分享嘛。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/221338

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX