IBM Cloud 支持集成

了解何时以及如何使用 IBM Cloud 支持来解决性能问题。

自助服务资源

在开票之前,请检查以下内容:

何时联系 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 控制台

  1. 导航至顶部菜单中的“支持”。
  2. 单击创建案例
  3. 选择 Databases for MongoDB.
  4. 选择严重程度。
  5. 提供详细说明。
  6. 附加诊断文件。

使用 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 小时

升级程序

如果问题没有在预期时间内得到解决:

  1. 紧急更新支持案例。
  2. 请联系 IBM 客户团队。
  3. 对于关键问题,请求管理升级。

支持最佳做法

  • 预先提供完整的信息。
  • 迅速回应支持请求。
  • 首先在非生产环境中测试建议的解决方案。
  • 记录解决方案,供今后参考。

快速参考:诊断命令

MongoDB 性能故障排除的基本命令。

诊断命令
命令 用途 关键度量 正常值
db.serverStatus() 服务器总体统计数据 CPU、内存、连接 视工作量而定
db.serverStatus().connections 连接统计信息 当前可用 < 80% 可用
db.serverStatus().opcounters 操作计数器 插入、查询、更新、删除 基线依赖
db.serverStatus().locks 锁定统计信息 全局锁定时间 < 总时间的 10
db.serverStatus().wiredTiger.cache 缓存统计 高速缓存命中率

95%

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 })