一次tomcat连接池配置引发的DB高CPU故障小记

    早上来之后,发现一台DB的CPU变得很高,Alert不断报连接错误,很快连plsqldev客户端也连不上了,无监听器服务了;
    从sqlplus上做了一个AWR,load与Db_time这一个小时内变得很高,CPU73%是在sys端,us端很小,没有发现很耗时的SQL,Time modal下,主要是DB_CPU,conn管理其次,但比例却不高;
   总而言之,问题应该就是因为客户端不断地发起连接,导致CPU都用在连接创建了;
    但是,从v$session上只能查到目前已经连上DB的app server,netstat也是,却不好定位到哪几台机器在不停地发起连接,这可能需要tcpdump了,但这个操作不熟,tool到用时发现不熟,没招;
    好了应用端有了发现,昨晚新切的几台tomcat的 validationQuery发现设置为"select 1",这个明显是不适用于oracle的,一看到这个,心里基本上有了底,这个是校验连接是否存活的检测,估计当客户端申请连接时,连接池会用这个SQL去查现有的连接是否可用,但运行这个SQL肯定会收不到正确的结果,所以就认为不可用,从而发起新的连接,为什么上线后验证不能发现?应该是验证时连接数少,初始化的10个就够用了,也就没有暴露问题,而今天早上,大量用户上来了,申请大量的连接,而这个错误导致无法重用现有的连接,只有不断地创建;
    更改后,重启各应用服务器,很快就不再报连接错误了;问题确实是这个问题,而原因也定位是应用管理员直接拷贝配置文件,结果拷错了,源头应该来源于MYSQL的配置;
     通过这个故障,有好几个地方需要总结与加强的:
     1、是配置文件的校验与检查,这个自动化工具是很容易做到的,不能太相信运维人员的手工操作;
     2、这个问题的定位或许可以更快速与准确,因为这种解析错误的SQL,是可以从v$kglob、10035事件、或systemstate dump中找到的,所以,加强这几个操作的熟练程度,是有助于提升定位速度的;
      在这个问题上,tcpdump估计也不好使,抓出来的可能都是正常的连接,恐怕也发现不了这种连接的规律;

     总之,很有感触的两点是:要加强工具的熟练程度,以便在出问题时能快速使用;二是校验胜于救火,预防方为上策啊;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13365316/viewspace-2134113/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/13365316/viewspace-2134113/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值