我有一个MySQL (实际上是MariaDB 5.2)设置,部署在一个4Gb节点上。所有的表都是InnoDB,InnoDB缓冲池大小为2G,大部分时间都是95%满。我使用ext3作为文件系统(不确定是否可以在云节点上使用其他任何东西)。我的应用程序对两个统计表进行了大量的写操作。这两个表都有一个auto_increment PK和一个唯一的索引。这些桌子每隔10分钟就由一份工作清洁一次。这个cron作业还执行许多长时间运行的查询来处理原始统计数据。
问题是,我时常得到高I/O尖峰。看起来,它们与InnoDB事务日志中的许多未校验字节相关。未校验字节的平均数量是18.6M,但当我看到这些尖峰时,它会达到80-90M。不知道是什么原因造成的。
物联网显示,当这些尖峰发生时,kjournald是表现最好的。我用"data=writeback“选项重新安装了FS,但是没有结果,kjournald仍然在顶部。我还试图减少交换,增加根设备的队列/nr_请求,但这也没有帮助。
我不知道下一步该怎么办。我想知道为什么kjournald会在FS上生成如此巨大的I/O负载,只记录元数据。我应该尝试调优提交间隔吗?或者可能使用离子冰?
发布于 2011-02-02 02:54:02
80-90米
它接近EXT3的默认日志大小。看上去已经满了,然后就开始冲洗了。答案在很大程度上取决于您对这种文件系统一致性的关心程度,因为它要么给您提供了大量的选择,要么给了您相当多的选择。
此外,如果这些统计表“每10分钟清理一次”,为什么不将它们放在内存中呢?
https://serverfault.com/questions/229909
复制相似问题