zoukankan      html  css  js  c++  java
  • 大蟒蛇肚子的"风暴"

    遇到了数据库连接数不足的问题,一般情况下会预留一些会话增加的情况,但在一些特殊情况下如连接风暴(logon storm), 如果在监听中没有做rate限流,对数据库来说巨大的冲击可能会导致数据库Hang 或 ora-20 或ora-18 错误。 对于Hang并伴有进程数不足的情况,AWR、ASH 都可能无法升成,甚至数据库都无法登录或做SSD 都不成功, 这时候LISTENER.LOG 就成了关键的“破案”线索。
    以往往往会用一些shell命令进行分析,如:
    $ fgrep "establish" anbob_listener.log |awk '{print $1 " " $2}' |awk -F: '{print $1 ":" $2 ":" $3 }' |sort |uniq -c
     
    分析时需要用肉眼查看结果,有些时候还会碰到一些状况,监听日志已经拷贝到windows下,还得传输至虚拟机下才能进行分析。
    这时候往往就会想有工具可以跨平台,能自动生成图表就更好了。后来认识到了大蟒蛇,发现它这方面的能力非常。
    今天,来分享一下怎么用大蟒蛇去对监听日志进行分析,并生成以下图表:
     
     
     
    这是一个二维图,需要有x轴和y轴数据,然后在进行组图。
    监听日志有些数据时有效的,有些是无效的
    有效数据条目:
    "05-AUG-2016 12:02:12 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=bomcdb)(CID=(PROGRAM=perl)(HOST=NMC-PREDEAL1)(USER=nmcuser))) * (ADDRESS=(PROTOCOL=tcp)(HOST=172.16.2.18)(PORT=57862)) * establish * bomcdb * 0"
    
    
    数据条目:
    05-AUG-2016 13:25:06 * ping * 0
    
    
    在数据处理时,特意把包含以下字符service_update、ping、status的数据过滤掉,进行统计。
    if str.__contains__("service_update") or str.__contains__("ping") or str.__contains__("status") == 1:
    
    
    当获取到的数据都是有效后,我们要对数据进行拆分,继续获取我们想获取的数据,由于只做统计,那么只要日期即可:
    x = str.split('*')[0]
    发现数据结尾包含一个空间,将空格进行去除
    temp = x.strip()
    
    
    监听日志的数据拆分完毕,把这些数据存放至一个数组 lsn_data中(这里可能大家有点疑惑,为啥不建二维数组呢?python不存在多维数组)。
    
    
    
    
    因为监听日志有一个很特别的地方,数据本来就是有序的,无需排序,只需去重,把数据放到数据lsn_time中,在处理过程中,可以统计时间的个数并放到数组lsn_count中
    # 去重
    for l_time in lsn_data:
    if l_time not in lsn_time:
    lsn_time.append(l_time)
    lsn_count.append(lsn_data.count(l_time))
    
    
    数据已经有了,我们只要把数据画图,即可出现上述的图表。
    
    
    可以把这些数据用图展示,也可以用表展示。这里用图进行展示
     
    s = Series(lsn_count,index=lsn_time)
    s1 = Series(16,index=lsn_time)
    plt.ylim(0,80)
    s.plot()
    s1.plot(color='red', linestyle='--')
    plt.show()
    
    
    用series()函数进行画图,lsn_count为纵坐标,index作为横坐标。在这里我加了1条红色的先s1,用虚线展示。在2013年,广东ngboss上线之初,某库经常出现tnsping缓慢问题。后来经美国实验室测试,每秒的连接数达到16个监听连接就会缓慢。若生成的图表长时间超过红色虚线,那就应该对应用进行拆分整理,避免监听风暴的产生。
  • 相关阅读:
    Codeforces 177G2 Fibonacci Strings KMP 矩阵
    Codeforces Gym100187C Very Spacious Office 贪心 堆
    Codeforces 980F Cactus to Tree 仙人掌 Tarjan 树形dp 单调队列
    AtCoder SoundHound Inc. Programming Contest 2018 E + Graph (soundhound2018_summer_qual_e)
    BZOJ3622 已经没有什么好害怕的了 动态规划 容斥原理 组合数学
    NOIP2016提高组Day1T2 天天爱跑步 树链剖分 LCA 倍增 差分
    Codeforces 555C Case of Chocolate 其他
    NOIP2017提高组Day2T3 列队 洛谷P3960 线段树
    NOIP2017提高组Day2T2 宝藏 洛谷P3959 状压dp
    NOIP2017提高组Day1T3 逛公园 洛谷P3953 Tarjan 强连通缩点 SPFA 动态规划 最短路 拓扑序
  • 原文地址:https://www.cnblogs.com/nolanchan/p/8016346.html
Copyright © 2011-2022 走看看