前段时间,一大早上,就收到报警,警告php-fpm进程的数量超过阈值。最终发现是一条sql没用到索引,导致执行数据库查询慢了,最终导致php-fpm进程数增加。最终通过analyze table feed_comment_info_id_0000 命令更新了Cardinality ,才能再次用到索引。
排查过程如下:
sql语句:
select id from feed_comment_info_id_0000 where obj_id=101 and type=1;
索引信息:
show
摘要
今天来分享一下我在线上环境遇到的有关MySQL间隙锁的死锁问题。本文将讲述从发现问题到解决问题的全过程,并给出一些个人建议,其中使用的数据将做脱敏处理,但不影响食用口感。
发现问题
运维同学发现有大量的MySQL死锁日志输出,如果你的系统有对MySQL进行死锁监控,可会在图形界面上很直观的发现这个问题。
你会发现日志里有大量下面这样的log输出:
Deadlock found when trying to get lock; try restarting transaction
定位问题
突然收到MySQL报警,从库的数据库挂了,一直在不停的重启,打开错误日志,发现有张表坏了。innodb表损坏不能通过repair table 等修复myisam的命令操作。现在记录下解决过程,下次遇到就不会这么手忙脚乱了。
处理过程: 一遇到报警之后,直接打开错误日志,里面的信息:InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 30506.
InnoDB: You may have to