[BUG排查日记]2012-06-04

最近更新系统,在更新后遇到一个奇怪问题,在分析和解决这个问题过程感觉对我能力的提高有那么一丁点帮助,感觉离我的目标又近了一小步,于是blog记之。

1、遇到的问题
更新系统后,遇到一个问题,新数据无论如何都读取不进来,而且本次更新的修改点不涉及新数据的读取逻辑,试试重启之后,依然无效,万分奇怪。

2、问题分析&定位
我先到日志里面grep和tail了一番,非常神奇,完全没有新数据的日志。于是,通过ps -ef|grep java,我发现系统读数据的进程已经启动了的,但为啥一直没读进新数据呢?
这个时候,我想起了jdk自带的工具jstack,我用jstack看了一下,发现一段mysql相关的数据库操作代码似乎有点异常,但我记得jstack可能只是表示某个瞬间的jvm运行情况,于是我重复几次执行jstack,发现这段数据库代码依然存在,因此我推想是mysql里面的问题。
我在console里面登录到mysql,show processlist一下,发现有个select count(*) xx的sql处于sending data状态,这句sql正好和上面jstack发现的那段代码吻合,看来真是mysql里面的sql出问题了,疑似没创建索引什么的?
再接着,我explain select count(*) xx,但结果提示有使用到索引啊,为啥还是那么慢,于是若干折腾了一下(这里大概10分钟吧,有点冤,我当时竟然没及时想到是另一个问题),我试试show create table xxx,接着恍然大悟,原来用错索引了,虽然有用到索引,但那个索引未能很好的和当前所用的where 条件匹配,毕竟这个索引本身不是给这条sql使用的。

3、问题解决
有了2的基础,我在table里面另外create index yyy,然后再看看系统,新数据已经读取进来了。

最后的总结:我觉得这次处理问题,在逻辑思维方面还比较弱,要继续努力,力求遇到问题时能第一时间有针对性的思考,追本溯源,要有理有据的解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值