配置运维与排障
配置运维关注的是配置规模、发布安全、历史追溯和运行时可见性。多数操作应由控制台、Admin API 或 Maintainer SDK 执行,不应放在普通业务应用里。
容量控制
Nacos 使用容量信息保护配置存储,避免配置无限增长。
| 范围 | 含义 |
|---|---|
| Cluster | 集群内正式配置总数。 |
| Namespace | 单个命名空间下的正式配置数量。 |
| Group | 不使用 namespace 维度容量时,单个 group 下的正式配置数量。 |
容量主要包含三个字段:
| 字段 | 说明 |
|---|---|
quota | 该范围内配置记录数量上限。0 表示使用默认值。 |
usage | 当前统计的配置记录数量。 |
maxSize | 单个配置内容大小上限,单位字节。0 表示使用默认值。 |
默认值包括:
| 配置 | 默认值 |
|---|---|
defaultClusterQuota | 100000 |
defaultGroupQuota | 200 |
defaultTenantQuota | 200 |
defaultMaxSize | 100 * 1024 字节 |
correctUsageDelay | 600 秒 |
initialExpansionPercent | 100 |
灰度版本是已有配置的发布状态,不作为独立正式配置计入容量。
历史和回滚
配置发布、删除、灰度发布和灰度删除都会记录历史。历史用于回答三个问题:
- 谁改了配置。
- 改动发生在什么时候。
- 改动前后内容和发布类型是什么。
回滚时建议先查看历史内容,再重新发布为正式配置。不要直接依赖本地 dump 文件做回滚依据。
Dump 和本地缓存
服务端本地 dump 是查询缓存。启动时,Nacos 会从持久化层重建本地服务状态。配置变更后,节点会通过 dump 任务刷新本地缓存。
排查时要记住:
- 数据库或嵌入式存储是权威来源。
- 本地 dump 不是权威来源。
- 本地 dump 落后时,应由周期性 dump 或管理修复操作从持久化层恢复。
- 本地磁盘无法安全保存 dump 内容时,会影响运行时查询正确性,应作为严重问题处理。
Admin 本地缓存操作适合应急修复,不应作为日常同步手段。
常见问题
| 现象 | 排查方向 |
|---|---|
| 应用没有读到新配置 | 检查应用是否监听了正确的 namespaceId/groupName/dataId,客户端是否收到通知并重新查询。 |
| 只有部分节点返回旧内容 | 检查节点 dump 是否完成,查看配置 dump 日志和集群变更通知。 |
| 灰度客户端没有命中 | 检查 beta IP 或 tag 是否正确传递,确认 grayName 和规则是否存在。 |
| 配置发布失败 | 检查参数校验、容量上限、鉴权、配置变更插件和内容大小。 |
| 查询列表很慢 | 检查搜索范围、分页大小、数据库状态和 nacos.config.search.* 相关配置。 |
| 本地和服务端内容不一致 | 检查客户端 failover 文件、snapshot,以及服务端 dump 状态。 |
生产建议
- 把配置发布权限收敛到控制台、发布平台或运维工具。
- 高风险配置先灰度,再正式发布。
- 为关键配置保留清晰的变更说明和审批记录。
- 监控配置推送、dump 任务、数据库健康和配置订阅者数量。
- 定期清理废弃配置、长期灰度版本和不再使用的命名空间。