操作检查列表
- 将磁盘分区与RAID配置对齐。
- Linux/Unix:将驱动器格式化为 XFS 或 EXT4。如果可能的话,使用 XFS,因为它通常在MongoDB 中运行得更好。
- 对于 WiredTiger 存储引擎,强烈建议使用XFS,以避免在将 EXT4 与 WiredTiger 一起使用时产生性能问题。
- 如果使用 RAID,可能需要使用 RAID 几何阵列配置 XFS。
- Windows:使用 NTFS 文件系统。不要使用任何 FAT 文件系统(例如 FAT 16/32/exFAT)。
- 验证所有非隐藏副本集成员在 RAM,CPU,磁盘,网络设置等方面的配置是否相同。
- 复制 oplog 窗口包括正常维护和停机时间窗口,以避免需要完全重新同步。
- 复制 oplog 窗口应涵盖从上次备份还原副本集成员所需的时间。
在 3.4 版本中更改:复制 oplog 窗口不再需要覆盖通过初始同步还原副本集成员 所需的时间,因为在数据复制期间会提取 oplog 记录。但是,正在还原的成员必须在本地数据库中具有足够的磁盘空间,以便在此数据复制阶段的持续时间内临时存储这些 oplog 记录。
对于早期版本的 MongoDB,复制 oplog 窗 口应涵盖通过初始同步还原副本集成员所需的时间。
- 将日志放在其自己的低延迟磁盘上,以适应写密集型的工作负载。请注意,这将影响快照样式备份,因为构成数据库状态的文件将位于单独的卷上。
- Windows Azure:将 TCP 长连接(TCP长连接时间)调整为100-120。Azure 负载均衡器上的 TCP 空闲超时对于 MongoDB 的连接池行为太慢。有关详细信息,请参阅 Azure产品说明。
- 在具有高延迟存储的系统(如Microsoft Azure)上使用 MongoDB 版本 2.6.4 或更高版本,因为这些版本包括这些系统性能的改进。
- 对于 WiredTiger 存储引擎,无论存储介质类型(旋转磁盘、固态硬盘等)如何,请将文件预读设置在8到32之间,除非测试显示在较高的文件预读值中有可测量、可重复和可靠的好处。
- 如果在 RHEL/CentOS 上使用 tuned(动态内核调优工具),则必须自定义您的 tuned 配置文件。RHEL/CentOS 附带的许多 tuned 文件可能会对其默认设置的性能产生负面影响。将您选择的 tuned 文件自定义为:
- 对SSD驱动器使用 noop 或 deadline 磁盘调度程序。
- 对来宾虚拟机中的虚拟化驱动器使用 noop 磁盘调度程序。
- 为部署配置足够的文件句柄(fs.file max)、内核 pid 限制(kernel.pid_max)、每个进程的最大线程数(kernel.threads max)和每个进程的最大内存映射区域数(vm.max_map_count)。对于大型系统,以下值提供了一个良好的起点:
- fs.file-max 值为98000,
- kernel.pid_max 值为64000,
- kernel.threads-max 值为64000, 和
- vm.max_map_count 值为128000
- 确保系统已配置交换空间。有关适当大小的详细信息,请参阅操作系统的文档。
- 考虑禁用 NTFS “最后访问时间”更新。这类似于在 Unix-like 系统上禁用atime。
- 安排定期测试备份和恢复过程,以便手头有时间估计,并验证其功能。
- 使用 MongoDB Cloud Manager或者MongoDB 企业高级版中提供的本地解决方案- Ops Manager 或者另一个监控系统来监控关键数据库指标并为它们设置警报。包括以下指标的警报:
- 复制滞后
- 复制 oplog 窗口
- 断言
- 队列
- 页面错误
- 监视服务器的硬件统计信息。尤其要注意磁盘使用、CPU 和可用磁盘空间。在没有磁盘空间监视的情况下,以下方案作为预防措施:
- 在storage.dbPath驱动器上创建一个4 GB的虚拟文件,以确保磁盘满时有可用空间。
- 如果没有其他监视工具可用,cron+df 的组合可以在磁盘空间达到高水位时发出警报。
- 将负载平衡器配置为启用“粘滞会话”或“客户端亲和性”,并为现有连接提供足够的延时。
- 避免在 MongoDB 集群或副本集组件之间放置负载平衡器。
译者:孔令升