IBM Cloud 支持集成
了解何时以及如何使用 IBM Cloud 支持来解决性能问题。
自助服务资源
在开票之前,请检查以下内容:
- IBM Cloud 数据库文档
- MongoDB 文献资料
- IBM Cloud 状态页面
- 社区论坛和 Stack Overflow
何时联系 IBM 支持
如有以下情况,请联系技术支持:
- 使用本指南后,性能问题依然存在。
- 尽管进行了优化,但复制仍然滞后。
- 在没有工作负载峰值的情况下,磁盘延迟仍然很高。
- 疑似基础设施层面的问题。
- 缩放后出现意外行为。
- 部署健康问题。
- 备份或还原问题。
联系技术支持之前
收集以下信息:
-
部署详细信息
- 部署编号 (CRN)
- 区域和可用区
- 现行计划和资源
- MongoDB 版本
-
问题详细信息
- 问题的时间窗口(含时区)
- 观察到的症状
- 对应用程序的影响
- 最近的更改(代码、配置、缩放)
-
性能数据
- 来自 Sysdig 的监控截图
- 导致问题的查询示例
- 诊断命令的输出
- Activity Tracker 问题窗口期间的事件
-
MongoDB 诊断
# Collect diagnostic data mongo "your-connection-string" --eval " printjson(db.serverStatus()); printjson(db.currentOp()); printjson(rs.status()); " > mongodb-diagnostics.json
开具支持凭单
使用 IBM Cloud 控制台
- 导航至顶部菜单中的“支持”。
- 单击创建案例。
- 选择 Databases for MongoDB.
- 选择严重程度。
- 提供详细说明。
- 附加诊断文件。
使用 IBM Cloud CLI
# Create support case
ibmcloud support case-create \
--subject "MongoDB Performance Issue" \
--description "Detailed description of issue" \
--severity 2 \
--offering databases-for-mongodb
严重性级别
| 严重性 | 描述 | 响应时间 |
|---|---|---|
| 1(紧急) | 停产、数据丢失 | 1 小时 |
| 2(高) | 性能显著下降 | 2 小时 |
| 3(中等) | 中等影响,有变通办法 | 4 小时 |
| 4(低) | 一般问题、功能请求 | 8 小时 |
升级程序
如果问题没有在预期时间内得到解决:
- 紧急更新支持案例。
- 请联系 IBM 客户团队。
- 对于关键问题,请求管理升级。
支持最佳做法
- 预先提供完整的信息。
- 迅速回应支持请求。
- 首先在非生产环境中测试建议的解决方案。
- 记录解决方案,供今后参考。
快速参考:诊断命令
MongoDB 性能故障排除的基本命令。
| 命令 | 用途 | 关键度量 | 正常值 |
|---|---|---|---|
db.serverStatus() |
服务器总体统计数据 | CPU、内存、连接 | 视工作量而定 |
db.serverStatus().connections |
连接统计信息 | 当前可用 | < 80% 可用 |
db.serverStatus().opcounters |
操作计数器 | 插入、查询、更新、删除 | 基线依赖 |
db.serverStatus().locks |
锁定统计信息 | 全局锁定时间 | < 总时间的 10 |
db.serverStatus().wiredTiger.cache |
缓存统计 | 高速缓存命中率 |
|
db.currentOp() |
当前业务 | 主动查询、锁定 | 很少有长期行动 |
db.currentOp({ waitingForLock: true }) |
等待锁定的操作 | 锁争用 | 应为空 |
rs.status() |
复制集状态 | 复制滞后、成员健康 | 滞后 < 1 秒 |
rs.printSecondaryReplicationInfo() |
复制滞后详情 | 每个二级滞后 | 滞后 < 1 秒 |
db.collection.stats() |
收集统计信息 | 大小、索引大小、文件数量 | 监测增长 |
db.collection.find().explain("executionStats") |
查询执行计划 | 执行时间,检查文件 | 使用索引 |
db.system.profile.find() |
查询日志缓慢 | 运行缓慢 | 定期审查 |
sh.status() |
分片状态(如适用) | 块分配 | 均匀分布 |
db.adminCommand({ top: 1 }) |
藏品使用统计 | 热门收藏 | 确定优化目标 |
db.printReplicationInfo() |
Oplog 信息 | Oplog 大小、时间范围 | 足以恢复 |
快速诊断工作流程
// 1. Check overall health
db.serverStatus().ok // Should return 1
// 2. Check connections
var conn = db.serverStatus().connections;
print("Connections: " + conn.current + "/" + conn.available);
// 3. Check replication (if replica set)
rs.status().ok // Should return 1
// 4. Check for slow operations
db.currentOp({ "secs_running": { $gt: 5 } })
// 5. Check cache efficiency
var cache = db.serverStatus().wiredTiger.cache;
var hitRatio = 1 - (cache["pages read into cache"] /
(cache["pages read into cache"] + cache["pages requested from the cache"]));
print("Cache hit ratio: " + (hitRatio * 100).toFixed(2) + "%");
// 6. Check for lock contention
db.currentOp({ waitingForLock: true })