跳到正文
Elaine Blog
返回

高可用集群、容量规划与性能调优

Elasticsearch 与搜索架构

Elasticsearch 调优先做容量与故障预算,再改线程池或缓存。目标不是让单次基准最快,而是在一个节点或可用区故障时,剩余资源仍能承载流量并在目标时间内恢复副本。

Table of contents

Open Table of contents

先算存储

粗略容量公式:

总磁盘 ≈ 每日原始数据 × 保留天数 × 索引膨胀系数 × (1 + 副本数) / 目标利用率

索引膨胀系数受 _source、doc values、分词、压缩和字段数量影响,必须用代表性数据实测。目标利用率要为段合并、Reindex、恢复和水位保护留空间,不能按 100% 安排。

主分片数量由总数据、目标分片大小、写入并行度和恢复时间共同决定。分片太小会放大元数据与调度成本,太大则迁移和恢复慢。用本系统基准选择范围,不背固定“每片多少 GB”。

堆和文件系统缓存

Elasticsearch 堆服务于集群状态、聚合、缓存和请求对象;Lucene 还依赖操作系统文件缓存。不要把机器内存全部分给 JVM。监控堆使用、GC 停顿、请求熔断、Page Cache 命中、磁盘 IOPS 和段合并。

专用 master-eligible 节点管理集群状态,不承载重搜索;数据节点可按热、温、冷职责组织。节点与副本跨故障域放置,否则一个机架故障可能同时失去主副本。

用瓶颈证据调优

查询慢时依次查看协调端耗时、分片数、慢日志、Profile、CPU、GC、磁盘与网络。常见修复是减少查询分片、限制聚合、调整 Mapping、预计算字段或增加副本分担读,而不是无条件扩大线程池。

故障演练至少覆盖:停止数据节点、失去一个故障域、磁盘到高水位、快照恢复和滚动升级。记录集群变黄/绿时间、未分配分片原因、恢复带宽和业务 P99。

下一步

继续阅读09-11 MySQL 到 Elasticsearch 的一致性,设计可重放、可校验的数据同步。


分享这篇文章:

上一篇
自定义分词、同义词和中文搜索
下一篇
MySQL 到 Elasticsearch 的一致性