V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abccba
V2EX  ›  编程

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

  •  
  •   abccba · 2015-09-17 09:53:06 +08:00 · 3443 次点击
    这是一个创建于 3356 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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


    @goool
    是,所以我最后还说,有啥经验、工具都可以分享嘛。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2690 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 03:36 · PVG 11:36 · LAX 19:36 · JFK 22:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.