百亿数据下 ES 性能优化 袋鼠云高级运维工程师 河图
02 03 ES 集群性能优化 云日志平台的应用
需求背景 : 业务发展越来越快, 系统间关联复杂, 服务器器越来越多 各种访问 日志 应 用 日志 错误 日志的 文件数量量越来越多 运维 开发 人员排查问题时, 需要到服务器器上找 日志, 非常不不 方便便 那咋办呢? 运营 小姐姐统计 一些数据, 也需要到服务器器上分析 日志
基础 ELK 架构 - 适用测试环境
ELKB 架构 - 适用小规模日志场景
ELKB+Kafka 架构 - 适用大规模日志场景 袋 鼠云 jlogstash 开源项 目 -Logstash 数据处理理性能提升 5 倍 https://github.com/dtstack/jlogstash
01 日志分析的价值 03 云日志平台的应用
某大型互联网传媒公司 客户情况 : l 日志数据 日增 2TB( 约百亿条数据 ), 峰值 40 万 / 秒 l 基于基础 ELK 架构 拥有 80 个节点 l 索引写 入速度不不稳定 l 大搜索时搜索超时, 但 ES 持续负载飚 高 l 频繁 young gc full gc
核心问题 日志数据增量大小 日志保留时长 小规模数据量方案 : 日志增量量索引推荐个数保存天数 ES 集群配置 10G 1 天 1~2 个 5 天 ~10 天 3 台 4c8g 200G~500G 100G 1 天 10 个 ~20 个 5 天 ~10 天 master/data 分离 master:2c4g data:5 台 8c 16g 1T~2T 500G 1 天 30~40 个 5 天 ~10 天 Hot-Warm Hot:5 台 16c 32g 4T Warm:4C 16G 4T 1T+++ 那 大规模数据数据 ES 集群如何规划
规划方案 规划结果 节点规划 :master data 分离 ; 冷热数据分离 内存规划 :30G 的 Heap 大概能处理理 10T 的索引数据超过 64G 内存的机器器运 行行多个 ES 实例例 80+ 机器器优化到 30+ 硬盘规划 : 多块磁盘 ;SSD 索引规划 : 划分业务系统, 提前创建索引 大索引按天分隔 小索引使 用aliases 接 入 400+ 个服务器器, 日增 80+ 个索引, 3TB+ 索引 120 亿 + 条 / 天, 峰值 40w 条 /s, 日志保留留 10 天 分片规划 : 每个分 片不不超过 40GB 每个节点不不超过 3 个分 片 刷新时间 :5s( 告警 ),10s( 状态指标 ), 15~30s( 文本 日志 )
现象描述 : Ø 索引的写 入抖动 非常剧烈烈
ES 索引写入原理 : 从小文件合并成大文件 索引 合并结果 : 合并过程
Segment 数量情况 Merge 默认参数 : 默认大小 默认大小默认个数 大小增大 10 倍默认个数 个数增加 3 倍默认大小 默认个数 那 Merge 应该如何调整 Segment 内存情况
调整 Merge 策略 l 针对大索引 : max_merge_at_once: 10 max_merged_segment: 10gb segments_per_tier: 10 floor_segment: 20mb l 针对小索引 : max_merge_at_once: 30 max_merged_segment: 5gb segments_per_tier: 30 floor_segment: 10mb l 优化结果 : 数据写 入 非常平稳
现象描述 : Ø 在进行历史数据搜索时发现频繁搜索超时 Ø 超时后 ES 负载依旧很高 Ø 且偶尔伴随着 OOM 土豪方案 : 加内存! 这个问题充钱就能解决! Ø 调整 Linux 系统参数 : Ø vm.swappiness=1 然 而 土豪 方案没有从根本解决问题 还有别的 方案吗
高性价比的方案 调整索引存储策略 index.store.type Ø mmapfs( 默认 ) -- 适 用于 小索引 Ø niofs -- 适 用于 大索引 历史索引
观察到的现象 : Ø 新生代垃圾回收频繁 ; Ø full gc 耗时长, 导致节点失联 调整策略 1: 调整 cms gc 开始时间 -XX:CMSInitiatingOccupancyFraction=70 调整后问题 : Full gc 间隔时间 长但是节点失联更更严重 调整策略 2: 调整 jvm heap 比例例新 生代 : 老老年年代 == 1:4 -XX:NewRatio=4 调整后问题 : 需要不不断优化, 动态调整该值 每次调整需要重启 生效
终极策略 调整 GC CMS G1 调整值 : -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:GCPauseIntervalMillis=1000 -XX:InitiatingHeapOccupancyPercent=35 Ø 调整后目前还未出现 full gc
部署 & 扩容 : Ø Ansible Ø Ansible-playable
进程管控 : Ø supervisor Ø cesi 索引管理 : Ø curator Ø jiacrontab
监控方案 : Ø netdata 单机 Ø es_exporter + prometheus + grafana- 集群
性能优化 : Ø elastic-hq: 性能分析 Ø cerebro: 索引管理理 settings Ø whatson:segment 分析 Ø es cat api
Node: Indices: Ø GC count/gc time Ø Query time 查询耗时 Ø Query time Ø Index time 查询耗时 索引耗时 Ø Index time 索引耗时 Ø Merge time 合并耗时 Ø Merge time 合并耗时 Ø Segment count Ø Segment memory Ø Index writer memory 写 入内存 Ø Segment count Ø Segment memory
新功能(beta) Infrastructure UI Logs UI 袋 鼠云 日志产品对以上功 能有成熟的解决 方案
01 02 ES 集群概况 ES 集群优化
是基于日志数据的运维分析产品 数据采集 搜索和分析 数据可视化 全栈式日志数据及范日志数据采集汇总管理, 不需要登录服务器即可批量部署 Agent 并进行配置管理 海量数据秒级搜索, 并对大量数据源进行格式化分析整合解析, 可视化配置解析规则 日志数据展示, 可通过自定义设置业务仪表盘展示数据, 生动直观展示机器情况和业务情况
业务监控 中间件监控 业务监控 数据库监控 系统监控 SaaS 版云 日志使 用场景图 扫码注册体验 SaaS 版本云 日志 https://account.dtstack.com/#/login
调研业务 调研业务 深耕业务模式, 了解具体操作 规范日志 落地培训 云日志服务 Text here 规范日志 对需求日志进行字段提取和规范化 场景规划 对于日志进行场景的规划 落地培训 场景规划 对企业人员进行培训和落地实施, 让方案得以实现
袋鼠云丨数据智能, 让未来变成现在 袋鼠云成立于 2016 年, 是国内领先的 自创 1 亿 4 地 立以来, 袋鼠云始终坚持的理念, 将数据智能的先进理念和技术传播和应用到传统行业中, 在 一切业务数据化 的基础上, 通过帮助挖掘客户的数据价值, 实现 一切数据业务化, 帮助提升生产效率, 促进产业创新和社会进步 一年半内累计融资 1 个亿, 入 选 2018 年杭州 准独角兽 榜单 3000+ 客户选择和袋鼠云数智同行 总部坐落于人间天堂杭州, 在北京 上海 贵州均 设有分公司或办事处 7 项 80% 作为阿里云战略合作伙伴, 阿里云生态技术先锋, 拥有 7 项阿里云合作伙伴认证, 超过 10 位阿里云全球 MVP 公司总人数超过 200 人, 其 中 80% 为技术人员, 每年数千 万研发投入 使命 : 让数据产生价值愿景 : 做最领先的数据智能践行者价值观 : 客户第一 团队合作 专业 担当
THANKS 电话 :400 002 1024 网址 :www.dtstack.com 微信公众号
专业 垂直 纯粹的 Elastic 开源技术交流社区 https://elasticsearch.cn/