存档

2013年6月 的存档

ext4 mysql flush_log 相关

2013年6月7日 eric 352 条评论

最近有一些业务服务器开始使用6.3服务器,顾客开始说访问页面会卡,主要反映在切换页面,数据交互等,开始开始技术排查问题,同样的代码,同样的 apache mysql php 的配置,在 5.5 上运行很正常,在 6.3 运行就会卡。把问题转交到我手上,我开始对操作系统进行了排查。 发现 5.5 服务器内核是 2.6.18,6.3的服务器内核是 2.6.32。查看硬件配置也是一样的,查看两边的 mysql配置文件也一样,这时候我觉得是不是 6.3 与 5.5 开机挂载磁盘的参数不一样呢? 两边都执行 cat /proc/mounts 后发现6.3 多一个 barrier=1 参数 而 5.5 没有,经过 google 发现这个参数是 2.6.22 以上内核开始有的,barrier=1,可以保证文件系统在日志数据写入磁盘之后才写commit记录,但影响性能。但是我们的 mysql 有个参数是每次的操作都要flush日志,这样的话每次就要提交两次,一就是有序写入。我们之前都是无序写入,虽然提高了安全性能,但是降低了性能,权衡之后我还是把 mysql 的参数改为2,这样的话我最多能丢失上一秒的数据,在可控范围内innodb_flush_log_at_trx_commit = 2 这样 6.3 不会出现卡的情况了。

分类: linux, mysql 标签: , ,