蝴蝶效应

8月1日
16点30分左右,田老师看到监控日志中出现了大量的锁等待。

反映给开发部门后开始进行问题的诊断。

一直到17点15分时,快要下班了,问题依旧。

没办法,总不能问题没解决就先行回家吧。于是看看到底是啥问题。

先看看现在的会话在等待什么?
看到大部分会话因为执行了insert into gonotion表格以及update gwwflog这两个语句发生了行级事务等待。

首先查看这两个表是否有外键的约束造成。结果发现这两个表只有主键,没有外键,并且本身的主键也没有被当做外键。这方面的因素可以排除。


现在的问题关注那个insert,insert造成行级事务锁,那么原因肯定在于是多行插入了一个相同的主键值。
要么这个事务提交,然后其他等待的事务就报主键冲突错误,要么这个事务回退,那么其他等待的会话中又有一个会出现一个会话持有锁,造成其他会话继续等待。-----这是后话了。

 

到底是什么原因造成多个会话插入相同的值呢?根据以前经验,该系统问题多数在与取号算法(即主键)有问题。很多因素下造成取号相同。

但是开发部门矢口否认取号算法有问题。问他们影响范围是一个机构还是全国的,给我的回答是全国范围。

于是继续查看是否有其他线索,检查操作系统日志,数据库日志,操作系统负载,表空间大小等,均未发现问题。
继续监控看锁的等待列表,发现一个很奇特的问题,列表上面的持有锁的会话会随时间做一些变化,过几分钟后,另外的会话会变成持有锁的会话,这个会话是先前等待锁的会话中的一个。
这一现象很像事务回退的症状。


开发部门最终检查中间件日志,发现可能是由于取号是根据应用访问平台时获取的内容,如果应用与平台的网络断掉也就是应用无法访问到平台数据,那么会造成取的号都由空值生成,最终造成主键冲突。


所以应用与平台的网络问题,算号问题,最终导致了看到的数据库的的等待现象。

看来某些时候的坚持还是自己要相当有底气才行。

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

转载于:http://blog.itpub.net/288166/viewspace-705048/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值