我在 ext4 文件系统上遇到了与 mongodb wiredtiger 引擎相关的性能问题(https://docs.mongodb.com/manual/administration/production-notes/#kernel-and-file-systems)
我有一个带有 2 个服务器和一个仲裁器的副本集(全部在 ext4 上)。
我想知道将具有不同文件系统(在我的情况下是 XFS)的新服务器添加到此副本集中是否存在问题,我们的想法是添加新的 XFS 辅助服务器,并将其中一个提升为主服务器,然后关闭 ext4 上的旧服务器。
答案1
副本集成员绝对可以使用不同的文件系统——成员甚至不知道同行正在使用什么文件系统。
尽管使用 Ext4 文件系统是 MongoDB 和 WiredTiger 出现性能问题的一种可能(尤其是在大量写入负载下),但可能还有其他问题会影响您的使用案例。如果您决定发布后续问题来调查您的周期性性能问题,那么 MongoDB 服务器的具体版本、操作系统版本、启动警告以及与减速期相关的任何日志消息等详细信息可能会提供更多见解。其他部署详细信息(如托管(裸机与云)、服务器资源(RAM、CPU、磁盘类型)和mongod
配置更改)也可能相关。
由于您怀疑与使用 Ext4 相关的性能问题,我会尝试隔离对 MongoDB 部署的更改以尝试确认这一理论(特别是如果您的周期性停顿始终可重现):
- 如果您只看到副本集的一个成员(例如主节点)出现周期性停顿,请尝试降低当前主节点,以便成员交换角色。缓慢/配置不足的 I/O(或云/共享托管环境中的嘈杂邻居)有时可能是罪魁祸首。您还可能会发现,根据成员的角色,还有其他一些因素(例如,如果您的应用程序正在从辅助节点读取)。
- 如果您看到当前两个承载数据的成员都出现周期性停顿,请使用 XFS 添加一个新成员,以
storage.dbPath
测试该新成员是否表现出相同的行为。 - 如果您尚未运行 MongoDB 版本的最新次要版本,请升级。例如,如果您正在运行 MongoDB 3.4.2,而可用的最新 3.4.x 版本是 3.4.10,那么绝对值得测试最新的稳定版本。同一生产版本系列中的升级包括错误修复和稳定性改进,但不应引入任何兼容性变化。
其他建议:
- 查看 MongoDB 日志,查找任何可疑活动或可能与速度减慢或停滞期相关的日志消息。例如,TTL(生存时间)索引过期任务每 60 秒运行一次,可能会删除大量文档。可能会记录慢查询或其他相关警告。
- 假设您已经实施了一些指标监控,请查看 MongoDB 部署的指标,以查找与性能不佳时期相吻合的异常值或模式。
- 如果您运行的 MongoDB 最新生产版本系列后面还有多个主要版本,请考虑在代表性暂存/开发环境中测试主要版本升级。连续的主要版本都有显著的改进。
- 有关调整部署的一般信息,还值得查看MongoDB 生产说明。