Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – IO等等导致如此大的减速(EXT4 JDB2在99%IO)在Mysql Commit期间大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在编写一个索引器,使用 python,它将文档编入索引并将它们插入到数据库中,在它是单个进程之前,但现在我使用4个并行进程运行它进行多处理.每次文本提取后,它都插入数据库并执行提交. 现在它遇到了IO问题,主要的IO问题不是我的过程而是EXT4的jdb2,journeling系统.它是99.99%并且在每次MySQL提交时等待CPU等待CPU. 我看到许多人在互联网上遇到这个问题,他们的解决方
我正在编写一个索引器,使用 python,它将文档编入索引并将它们插入到数据库中,在它是单个进程之前,但现在我使用4个并行进程运行它进行多处理.每次文本提取后,它都插入数据库并执行提交.

现在它遇到了IO问题,主要的IO问题不是我的过程而是EXT4的jdb2,journeling系统.它是99.99%并且在每次MySQL提交时等待@L_696_6@等待@L_696_6@.

我看到许多人在互联网上遇到这个问题,他们的解决方案是使用barrier = 0挂载.会完全禁用日记功能吗?我的服务器有UPS并且很想做到这一点,我应该吗?

解决方法

弹性和性能之间总是存在折衷.

对于ext4上的MysqL,barrier = 1认确实会导致速度减慢,但是第一个操作不应该是禁用日记或打开data = writeBACk.

首先,如果弹性非常重要,那么备用电池的RAID肯定是值得的.

我选择的挂载选项,尤其是非备用电池的RAID是:

/dev/mapper/vg-MysqL--data  /var/lib/MysqL/data ext4  defaults,noatime,nodiratime,barrier=1,data=ordered  0 0

这是故意不使用data = writeBACk,因为我不想冒文件系统损坏的风险,导致“崩溃和日志恢复后”旧数据出现在文件中“(引用来自man mount).

@H_888_16@my.cnf中关于I / O相关设置的完全弹性的理想配置是:

[MysqLd]
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1

我选择了以下一系列权衡以提高性能

> sync_binlog = 0:这是我改变完全弹性的第一个MysqL配置.这样做的原因是它提供了显着的性能改进,特别是在binlog_format = row(不幸的是Jira需要)的情况下.我在群集中使用了足够多的MysqL副本,如果binlog被断电情况损坏,我会从另一个副本执行二进制副本.
> innodb_flush_log_at_trx_commit = 2:完全ACID合规性需要值1,值为2“日志缓冲区在每次提交时写入文件,但不对其执行刷新到磁盘操作.但是,当值为2时,日志文件上的刷新也会每秒发生一次.请注意,由于进程调度问题,每秒一次的刷新不会100%保证每秒发生一次.“ (引自MysqL文档)
>更新mount选项以使用data = writeBACk.请注意,如果这是您的根文件系统,则还需要传递内核命令行选项.我在coderwall处整理了几个步骤.>测试innodb_flush_method的各种值.显示O_DIRECT可以提高某些工作@L_450_36@的性能,但这并不能说明它在您的环境中有效.>升级到SSD,在这种情况下,您还需要增加innodb_io_capacity,并调整innodb_adaptive_flushing,innodb_read_io_threads,innodb_write_io_threads,innodb_purge_threads和其他可能设置等设置.

大佬总结

以上是大佬教程为你收集整理的linux – IO等等导致如此大的减速(EXT4 JDB2在99%IO)在Mysql Commit期间全部内容,希望文章能够帮你解决linux – IO等等导致如此大的减速(EXT4 JDB2在99%IO)在Mysql Commit期间所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。