发新话题
打印

dz6.0一次从崩溃到正常的惊险历程

dz6.0一次从崩溃到正常的惊险历程

前几天,公司论坛数据库突然出现大量的locked线程,以至于整个论坛间歇僵死,这段时间没有新增加任何功能,也没有动数据库,服务器配置也没什么变化,难道是数据库的数据到了极限了?
后来请dz工程师在程序上做了读写分离操作,虽然有一定缓解,但仍然不能正常发帖,后来将造成locked的语句暂时屏蔽,虽然访问比之前明显有所好转,但还是不能正常发帖,并开始出现大量的sorting result线程,只要在线人数一增加,紧随其后就有很多locked,论坛同样的出现间歇性僵死。
一直没有找到明确的答案,想过改关键表的数据引擎,但然公司论坛目前的数据量,似乎还没有到这个层级,而且如果换成innodb的引擎,整体访问速度上就会有所下降,也不符合论坛的发展,用SHOW VARIABLES 查看mysql配置的key_buffer_size参数也挺正常,那问题会出在什么地方了。
一直觉得dz的索引应该没有任何问题,但忘记了出问题后请别人帮忙时被改动过,用EXPLAIN查了一下出现sorting result的语句,在extra参数竟然是Using filesort ,也就是说在搜索的时候并没有使用到索引,赶紧恢复之前的索引,论坛完全恢复了正常,恢复之前停掉的语句,仍然正常,也就是说,造成论坛的崩溃的元凶是索引。
至此,问题得到的解决,但问题的导火线一直没法确定,key_buffer_size原来的值是300M,后来被改成1G,难道是这个参数的问题。
总之,可以肯定的一点,合理的索引会提高数据检索速度,而不合理的索引会导致整个系统崩溃。

TOP

发新话题