美文网首页工具类
保存分析一段时间内的top信息

保存分析一段时间内的top信息

作者: Tomasmule | 来源:发表于2018-09-26 11:59 被阅读31次

    有时候我们需要分析服务器的load average为何异常的高,然而跟踪这个问题,一般都会打开top命令查看进程或者线程信息。有时候这个异常只在特定的时间段内出现,比如服务的高峰期。还有服务的进程中有N多个线程,你用肉眼根本没法看全。这个时候,就需要将top的信息保存成文件来分析了。

        top -b -n 2400 -H -p xxxx > xxxx.log
    

    这里的xxxx是要跟踪的进程号,我这里就以跟踪某个特定的服务为例了。
    上面这句的意思就是 -b 能突破终端长宽的限制,显示这个进程的全部线程。
    -n 是刷新多少次, 我的top每3s刷新一次,那么2400次的时间就是 2个小时了。
    -H -p xxxx 就是跟踪xxxx这个进程中的线程了
    这些信息保存成了xxxx.log

    等到2小时后,就有xxxx.log这个日志了。
    我们来看xxxx.log这个日志的格式,就是2400个top信息累加成的一个文件。我们用python脚本按行分析(简单粗暴,但耗时)


    屏幕快照 2018-09-26 上午11.49.55.png

    然后按行分析,可以提取出load average 各线程所占用的cpu等信息
    python 脚本位置:
    https://github.com/Tomasmule2015/AnalyseTopFile.git

    直接执行python analysetopfile.py
    在analysetopfile.py 中更改需要分析的log文件,以及想要生成的db 名称。


    屏幕快照 2018-09-26 上午11.55.49.png

    生成的db用SQLiteStudio 打开,然后导出表格,再用表格的数据做成折线图,这样就有这个效果了:

    屏幕快照 2018-09-21 下午4.09.05.png

    相关文章

      网友评论

        本文标题:保存分析一段时间内的top信息

        本文链接:https://www.haomeiwen.com/subject/zfseiftx.html