尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

ELK 平台全链路写入压测与瓶颈优化周报

ELK 平台全链路写入压测与瓶颈优化周报 ELK 平台全链路写入压测与瓶颈优化周报作为支撑全站故障排查与安全审计的核心中枢日志平台在业务大促期间往往要承受比日常高出 5 到 8 倍的极端写入洪峰。如果日志管道发生阻塞不仅会导致 Kibana 日志出现数十分钟的滞后严重时还会因 Fluent Bit / Logstash 客户端内存暴涨反噬业务宿主机。在第一周的日志与追踪专项战役中我们围绕“采集端 Fluent Bit 背压调优 → 传输端 Logstash 正则提速 → 存储端 Elasticsearch 索引生命周期ILM与分片均衡”实施了全链路的纵深重构。本周五晚间我们利用流量回放工具对整套重构后的 ELK 平台进行了为期 4 小时的全链路极限写入压测。本文记录本次压测的实战数据、瓶颈攻坚过程与最终的调优周报。压测链路拓扑与流量模型压测流量模拟大促零点双倍峰值全站 280 个微服务容器以平均每秒35 万条日志约 450 MB/s 纯文本数据流的速率持续轰击日志管道[ 压测流量生成器: 350,000 logs/s ] │ ▼ [ 80 节点 Fluent Bit (开启 filesystem 磁盘缓冲 32MB 内存硬顶) ] │ (零丢包无 OOM) ▼ [ Kafka 日志消息总线 (6 分区, 保证百万级并发积压缓冲) ] │ ▼ [ Logstash 解析集群 (4 节点, 开启 Pipeline Worker 并发与 JSON 快速路由) ] │ (解析吞吐: 320,000 logs/s) ▼ [ Elasticsearch 存储集群 (6 数据节点, NVMe SSD, ILM 热节点无副本写入) ]压测过程中暴露的三大瓶颈与现场攻坚在压测启动后的前 30 分钟内随着写入速率被推升至 25 万条/秒系统先后亮起了三盏黄灯1. 瓶颈一Elasticsearchwrite.rejected突破 1,200 次/秒现象ES 数据节点的 CPU 利用率仅为 55%但写入线程池队列默认 1024迅速积压满Logstash 端开始频繁报错429 Too Many Requests (EsRejectedExecutionException)。根因分析默认配置下index.translog.durability: request每个 Bulk 写入请求到达后操作系统内核都会执行一次昂贵的fsync物理落盘调用底层 NVMe 磁盘的 IOPS 发生排队等待。现场调优PUT _index_template/app_logs_template { template: { settings: { index.translog.durability: async, index.translog.sync_interval: 30s, index.translog.flush_threshold_size: 2048mb, index.refresh_interval: 30s } } }改为异步刷盘与 30 秒刷新后write.rejected瞬间归零写入吞吐直接跃升 2.8 倍。2. 瓶颈二Logstash 垃圾回收GC导致吞吐剧烈抖动现象Logstash 每隔 45 秒吞吐量就会从 8 万条/秒断崖式下跌至 1 万条/秒持续约 3 秒后恢复导致 Kafka 消费 Lag 呈锯齿状积压。根因分析早期配置为了防止 OOM 将 JVM 堆内存设为 16GB使用了旧版 CMS 垃圾回收器在大并发对象频繁分配时触发了昂贵的并发标记停顿。现场调优将 JVM 堆内存精简收敛为8GB并全面切换为现代G1GC-Xms8g -Xmx8g -XX:UseG1GC -XX:MaxGCPauseMillis50 -XX:InitiatingHeapOccupancyPercent45调优后 Logstash GC 最大暂停耗时稳定在 35ms 以内管道吞吐波动率降至 3% 以下。3. 瓶颈三单分片超大引发的分片热点倾斜现象6 台 ES 节点中es-data-03节点的 CPU 持续 98%其余 5 台节点仅 40%。根因分析压测使用的索引仅配置了 3 个主分片导致 6 台机器中只有 3 台在承载写入。现场调优动态更新模版将主分片数扩容至6 个并设置index.routing.allocation.total_shards_per_node: 1强制物理打散。CPU 负载立即在 6 台节点间达到绝对均衡。最终压测验收数据总览经过三轮参数迭代攻坚日志平台在持续 2 小时的极限 35 万条/秒满负荷压测中交出了一份优异的成绩单关键性能指标调优前基线压测终态实测达标评估整站端到端写入吞吐上限8.5 万条/秒36.2 万条/秒 (约 480 MB/s)提升 4.25 倍Kibana 日志可见端到端延迟12 分钟 (发生严重积压)18 秒 (主要由 30s 刷新周期决定)极速可见Fluent Bit 采集端单节点内存800MB ~ 2.5GB (频繁 OOM)58MB ± 5MB (稳如泰山)压降 95%ES 写入丢包与拒绝率8.4% 拒绝0.000% (零丢包、零拒绝)完美通过总结本周对日志与追踪链路的深度重构与极限压测彻底打通了从容器采集到底层存储的全部阻塞管道。这套经过 35 万 QPS 烈火淬炼的日志基础设施已经完全具备在即将到来的大促峰值中从容抵御海量日志冲击的工业级实力。
返回列表