现在的位置: 首页 > 综合 > 正文

因为磁盘io瓶颈导致mysql当机的问题

2017年11月24日 ⁄ 综合 ⁄ 共 462字 ⁄ 字号 评论关闭

昨天晚上因为连续重建一些大表(每张表数据量都过一亿),导致其中有一个备库(使用的是普通的sas盘)崩溃,情况如下:

可见是io问题,查看错误号105 ,对应的错误信息为:

OS error code 105:  No buffer space available

原来是缓存不够用,查看缓存的情况:



该服务器上因为多实例部署故该数据库buffer_pool只分配了大概16G的内存,事物写入模式innodb_flush_log_at_trx_commit 设置为2,即写内核buffer具体刷盘取决于系统每秒的调度情况。

故初步判断因为系统每秒刷盘的速度比写入buffer的速度要慢久而久之导致buffer内存不足,而buffer和cache不一样无法进行swap,即最终mysql因为刷盘太慢导致buffer耗尽而崩溃。

关闭一些其他实例,然后重启该数据库,查看系统io情况:

果然磁盘使用率已经达到了饱和,sas盘性能太不给力的问题导致io使用率一直巨高。之后的一些表也不敢重建,等备库追上主库再说吧。

ps : 以上分析仅仅是个人见解,不一定正确仅供参考。

抱歉!评论已关闭.