• 日志分析技术


    算法:

    创建四个list对应存储不同的响应时间段

    读入日志文件每行内容,依次存入列表

    1.取出日志文件中每一次处理请求的时间,存入相应的list

      1.1 取出时间字符串

                先找到“op takes ”的位置-->idx1

                再找到 idx1 其后面紧跟着的第一个空格的位置-->idx2

             这行日志[idx1:idx2] -->responsetimestr

      1.2判断其值,存入相应list

    2.统计每个时间段list处理时间的个数,并计算百分比

    # coding:utf-8

    # 100ms以下的
    list100 = []
    # 100ms-500ms
    list100_500 = []
    # 500ms-1000ms
    list500_1000 = []
    # 1000ms以上的
    list1000 = []

    filepath = 'server.log'
    fd = open(filepath)
    lines = fd.readlines()
    fd.close()
    keyword = 'mac1:'
    for line in lines:
    #获取响应时间
    idx1 = line.find(keyword)
    idx1 += len(keyword)
    idx2 = line.find('',idx1)
    responsetimestr = line[idx1:idx2]

    rts = float(responsetimestr)
    #存入容器
    if rts < 0.1:
    list100.append(rts)
    elif 0.1 <= rts <0.5:
    list100_500.append(rts)
    elif 0.5 <= rts <1:
    list500_1000.append(rts)
    elif rts >=1:
    list1000.append(rts)
    num100 = len(list100)
    num100_500 = len(list100_500)
    num500_1000 = len(list500_1000)
    num1000 = len(list1000)
    totalnum = float(num100+num100_500+num500_1000+num1000)



    print u'0ms-100ms :%个,百分之 %.2f'% (num100,num100*100/totalnum)
    print u'100ms-500ms :%个,百分之 %.2f'% (num100_500,num100_500*100/totalnum)
    print u'500ms-1000ms :%个,百分之 %.2f'% (num500_1000,num500_1000*100/totalnum)
    print u'>1000ms :%个,百分之 %.2f'% (num1000,num1000*100/totalnum)


    重点:
    设计方法
    人工操作角度思考
    伪代码描述思路
    代码实现伪代码
    注意代码的可读性:合理命令;相应注释
    断点和单步执行的方式解决问题

  • 相关阅读:
    vue3.0之如何挂到vue原型,这种全局变量,方法,属性
    javascript中apply、call和bind的区别
    vue云标签效果升级版,动态钻形
    仅使用HTML和CSS实现的标签云效果 Fants
    export export default import * as zh
    vue国际化之vue-i18n使用
    linux 修改mysql 密码 (5.7版本)
    更改Java程序时间
    keepalive+mysql5.7
    mysql 授予用户所有权限
  • 原文地址:https://www.cnblogs.com/seven000/p/7383920.html
Copyright © 2020-2023  润新知