我目前正在使用 ubuntu 18.04 服务器(配备 8GB RAM、100 GB HDD 和 Intel I3 处理器)进行项目部署,并且正在使用 mysql 5.7 数据库服务器,但每当我尝试在数据库中插入数据时,与具有相同配置的 Ubuntu 16.04 相比,插入速度太慢了。
- Ubuntu 16.04 -> Mysql 5.7.24 -> 插入数据率(250k-350k /分钟)
- Ubuntu 18.04 -> Mysql 5.7.24 -> 插入数据率(10k-15k /分钟)
当我在将数据插入mysql时检查系统的性能时,我发现
- Ubuntu 16.04 -> CPU 利用率 60-70%
- Ubuntu 18.04 -> CPU 利用率 7-8%
Ubuntu 18.04 限制 mysql 应用程序使用最大 CPU,请告诉我上述解决方案。
答案1
在实施 ubuntu 18.04 时,Ubuntu 在 CPU 使用率方面取得了显着改善。Ubuntu 大大改善并降低了 CPU 使用率。他们还修复了数百个错误并进行了数百项其他小改进。
只是因为 MySQL 花费了太多时间来执行其操作,这个问题已经通过以下 MySQL 参数得到解决,这些参数强制 MYSQL 利用更多的 CPU 线程来执行操作。
刚刚解决了。通过将以下行添加到mysqld.cnf解决了问题:
innodb_read_io_threads=4
innodb_write_io_threads=8 #To stress the double write buffer
innodb_buffer_pool_size=20G # 70-80% available Memory
innodb_buffer_pool_load_at_startup=ON
innodb_log_file_size = 32M #Small log files, more page flush
innodb_log_files_in_group=2
innodb_file_per_table=1
innodb_log_buffer_size=8M
innodb_flush_method=O_DIRECT
innodb_flush_log_at_trx_commit=0
skip-innodb_doublewrite #commented or not depending on test
答案2
Linux 磁盘 I/O 电梯算法是罪魁祸首。
$ cat /sys/block/{device-name}/queue/scheduler
noop deadline [cfq]
将 io 模式改为deadline
,如果使用 ssd,应该使用noop
echo deadline > /sys/block/{device-name}/queue/scheduler
将电梯算法的选择附加到此内核启动命令条目。更改后的 Linux 内核启动命令将如下所示:
linux /vmlinuz-4.4.0-31-generic root=/dev/mapper/ashish--devbox--vg-root ro elevator=deadline