【.com快译】Mongo实例之间的小性能差异可以成就或破坏一个项目。 作为Linux阵营的重要成员,RedHat和CentOS无疑是企业经常接触和使用的强大工具。然而,大多数相关文章在讨论面向MongoDB的系统调优内容(如将磁盘I/O调度转移到/etc/udev.d)时,往往忽略了两者版本变化的影响。考虑到这一点,今天我们将专门研究这两个系统,以了解如何最好地进行基准性能调整。 Tuned 在RedHat(和CentOS)7.0中,开发人员引入了一个名为“tuned”的守护进程作为Linux应用程序调优的统一系统。Tuned采用简单的基于文件的调优机制,并提供tuned-adm命令行界面供管理员申请、列出和推荐调优配置文件。 Tuned的操作优势包括: 基于文件的配置:调整后的配置可以容纳在一个简单的合并文件中。 配置文件替换:可以轻松替换配置文件。 符合标准:使用经过调整的配置文件可确保现有调整不会被覆盖或忽略。 注意:如果你使用Puppet、Chef、Salt和Ansible等配置管理系统,我建议你也使用它们通过调优的配置文件来调优部署,而不是直接调优——否则调优工作可能会破坏自动化机制或覆盖现有更改。 以下是RedHat7.2.1511版本下可用的默认调优配置文件类别:Powersave Throughput-performance Virtual-guest Virtual-host 这些配置文件主要针对以下几类数据库用例: Latency-performance(延迟性能) "此服务器配置适用于典型的延迟性能调优。此配置禁用动态调优机制和transparent_hugepages。它通过cpuspeed对p-states进行性能治理,并将I/O调度程序设置为deadline.network-latency。" Throughput-performance(fluxperformance) 》这种服务器配置适用于典型的throughput性能调优,禁用tuned和ktune省电机制,启用sysctl设置优化磁盘和网络I/OThroughput性能,同时切换到截止日期调度程序。CPU调谐器将设置为性能。” Network-latency(网络延迟):包括latency-performance、禁用transparent_hugepages、禁用NUMA均衡和启用部分基于延迟的网络调优选项。 网络吞吐量:包括吞吐量性能并增加网络堆栈缓冲区大小。 我发现“网络延迟”最接近我们推荐的调整,但它仍然需要一些调整。 好消息是tuned被设计得极其灵活,所以我决定专门为MongoDB创建一个配置文件。输入tuned-percona-mongodb。 Tuned-Percona-Mongodb tuned-percona-mongodb是Linux环境下基于性能的MongoDB调优配置文件,目前处于实验阶段(不保证效果)。我们将其托管在我们自己的Percona-LabGitHub存储库中。 tuned-percona-mongodb使用以下调整选项并基于RedHat/CentOS7+主机: 禁用透明大页面。 内核网络调优(sysctls)。 虚拟内部dirty_ratio更改(sysctls)。 虚拟内在“swappiness”(sysctls)。 块设备预测设置(默认适用于除/dev/sda之外的所有磁盘)。 块设备I/O调度程序(默认情况下适用于除/dev/sda之外的所有磁盘)。 还有一些其他RedHat/CentOS特定的调优: CPUC-States和Energy-Bias调优以获得高性能。 磁盘活动链路电源管理(ALPM)调整(如果可能并受支持)。 成功部署此配置文件后,系统只会提供以下进一步调整建议: 文件系统类型和挂载选项。Tuned不处理文件系统挂载选项;我们需要在/etc/fstab中手动执行此操作。为了快速完成总结,建议大家在使用MMAPv1或RocksDB存储引擎时MongoDB数据选择XFS或EXT4文件系统类型,使用WiredTiger时使用XFS。对于所有文件系统,使用挂载选项rw、noatime来减少一些活动。 禁用或交叉NUMA。Tuned不处理NUMA设置,因此需要通过MongoDBinit脚本或BIOS开/关开关手动处理。 Linuxulimit。Tuned不会处理Linuxulimit设置。但是,PerconaServerforMongoDBRPM包将在您首次启动时帮助您解决这些问题。 您可以查看/usr/lib/systemd/system/mongod.service中的LimitNOFILE和LimitNPROC以获取更多信息。 ·NTP服务器。Tuned不会处理RPM包的安装或启用相关服务。需要手动安装ntp包并启用并启动ntpd服务: Tuned-Percona-Mongodb:Install 这个配置文件的安装过程很简单,直接用Git命令查库即可,然后运行??sudomakeenable。完整的输出如下: 在上面的示例中,您可以看到percona-mongodb已成为系统上的活动调优配置文件(您可以在输出的最后一行看到它)。 每个调优的配置文件都安装到/etc/tuned/percona-mongodb,如下所示: 接下来我们检查deadlinei/oscheduler是否已经成为每个磁盘的当前调度程序(不是/dev/sda): 透明大页面被正确禁用: /dev/sdb上的块设备预读设置应该是32(16kb): 就这么简单! Tuned-Percona-Mongodb:Uninstall 要批准此配置文件,在githubcheckout目录中运行SudoMakeUninstall: 注意:卸载过程将启用延迟性能调优配置,请注意更改如有必要,请在卸载后使用。 为确认卸载,接下来我们检查块设备预读是否已设置为默认值(256/128kb): 卸载完成。 总结 Tuned在面向MongoDB的Linux调优领域表现突出,可以提供统一的单一接口实现Linux操作系统的调优。在下一篇文章中,我们还将看到如何微调文档。 如上所述,在应用tuned-percona-mongodb之后,您仍然需要手动配置NTP服务器、NUMA(在某些情况下)以及文件系统类型和调优。但是有了tuned的帮助,剩下的部分工作所花费的时间和精力以及出现问题的可能性都大大降低了。 原文链接:https://dzone.com/articles/tuning-linux-for-mongodb-automated-tuning-on-redha 原标题:TuningLinuxforMongoDB:AutomatedTuningonRedhatandCentOS 原作者:TimVaillencourt
