在以前的一篇博客“Tuning Linux for MongoDB”(优化 Linux 下的 MongoDB)中,我罗列了几种方法——如何在 Linux 项目中高效调试 MongoDB 的部署。而这篇博客就是在此基础之上做的扩展。 虽然优化 Linux 下的 MongoDB 介绍了一些不错的方法,但要真正实现 MongoDB 的高效 Linux 安装,还是要付出很多时间和精力。更重要的是,一些文章在探讨面向 MongoDB 的系统调优内容时,往往忽略了 RedHat 与 CentOS 版本变动造成的影响(例如,将磁盘 I/O 调度转移至 /etc/udev.d 当中)。为解决这些问题,我们今天将专门着眼于这两套系统,探讨如何更好地完成基准性能调优。 Tuned在 RedHat 7.0(以及 CentOS 7.0)中,开发者引入了名为“tuned”的守护程序,其作为统一化系统对 Linux 进行调整优化。它采用简单的基于文件的优化操作,并为管理员提供一个“tuned-adm”命令行接口来进行优化配置的申请、排列和推荐。 Tuned 的便利操作: 基于文件的配置——配置文件调优包含在简单的合并文件中 可交换配置文件——可轻松更改配置文件。 符合标准——使用 tuned 配置文件可确保调整不会被覆盖或忽略 注意:假如你使用配置管理系统,例如:Puppet、Chef、Salt、Ansible 等。我建议你将系统设置为通过优化配置加载优化而不是直接进行应用调优,否则调优的操作可能会和自动操作起冲突,覆盖改变。 默认可用的 tuned 配置文件类别(RedHat 7.2.1511):
通常情况下数据库常用到的配置文件有:
我发现“网路延时”是最匹配我们推荐的调优方案,但也需要对其进行部分调整。 好在 tuned 被设计得很灵活,因此我决定再做一个 MongoDB 专用的配置文件:输入“tuned-percona-mongodb”。 tuned-percona-mongodbtuned-percona-mongodb: https://github.com/Percona-Lab/tuned-percona-mongodb “tuned-percona-mongodb”是一个专门面向 Linux 环境下 MongoDB 的性能型调优配置文件,目前仍处于实验阶段(没有任何效果保证),我们将其托管在 Percona-Lab Github 库中. 基于 Redhat/CentOS 7+ ,tuned-percona-mongodb 适用于以下的调优选项(之前的一篇优化文章):
另外还有一些其他的针对 RedHat/CentOS 版本作出的特定调优:
在成功部署这些配置之后,系统仅会提供以下进一步调优建议:
sudo yum install ntp sudo systemctl enable ntpd sudo systemctl start ntpd tuned-percona-mongodb:安装此配置文件的安装过程非常简单,只需要使用 Git 命令检查该库,而后运行 sudomakeenable 即可。完整输出如下: $ git clone https://github.com/Percona-Lab/tuned-percona-mongodb $ cd tuned-percona-mongodb $ sudo make enable if [ -d /etc/tuned ]; then cp -dpR percona-mongodb /etc/tuned/percona-mongodb; echo "### 'tuned-percona-mongodb' is installed. Enable with 'make enable'."; else echo "### ERROR: cannot find tuned config dir at /etc/tuned!"; exit 1; fi ### 'tuned-percona-mongodb' is installed. Enable with 'make enable'. tuned-adm profile percona-mongodb tuned-adm active Current active profile: percona-mongodb
在上面的示例中,您可以看到“percona-mongodb”已成为系统上活跃的调优配置文件(在最后一个输出行上有提到)。 $ ls -alh /etc/tuned/percona-mongodb/*.* -rwxrwxr-x. 1 root root 677 Nov 22 20:00 percona-mongodb.sh -rw-rw-r--. 1 root root 1.4K Nov 22 20:00 tuned.conf 然后我们检查 “deadline”i/o 调度器是否已经成为各磁盘(非 /dev/sda)的当前调度程序: $ cat /sys/block/sdb/queue/scheduler noop [deadline] cfq 透明大黄页已被禁止: $ cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never] $ cat /sys/kernel/mm/transparent_hugepage/defrag always madvise [never] /dev/sdb 上的块设备预读设置应为 32(16 kb): $ blockdev --getra /dev/sdb 32 这很简单! tuned-percona-mongodb:卸载在 github 的检出目录直接运行“sudo make uninstall”卸载配置: if [ -d /etc/tuned/percona-mongodb ]; then echo "### Disabling tuned profile 'tuned-percona-mongodb'"; echo "### Changing tuned profile to 'latency-performance', adjust if necessary after!"; tuned-adm profile latency-performance; tuned-adm active; else echo "tuned-percona-mongodb profile not installed!"; fi ### Disabling tuned profile 'tuned-percona-mongodb' ### Changing tuned profile to 'latency-performance', adjust if necessary after! Current active profile: latency-performance if [ -d /etc/tuned/percona-mongodb ]; then rm -rf /etc/tuned/percona-mongodb; fi 注意:卸载会启用“latency-performance”调优配置,如有需要,可在卸载之后修改。 为了确认卸载,让我们检查一下块设备预读是否被设置回默认值(256/128kb): $ sudo blockdev --getra /dev/sdb 256
卸载完成。 结论
到目前为止,tuned 在面向 MongoDB 的 Linux 调优领域拥有出色的表现,如,为调整 Linux 操作系统提供单一、一致的接口。 在接下来的文章中,我们还将了解如何对文档进行调优
连接(责任编辑:IT) |