12月15日,即便天气寒冷,飘着雨。跨星空间座无虚席由袋鼠云、阿里云、elastic中文社区主办袋鼠云、阿里云、有赞、滴滴的技术大牛倾囊相授~
“ElasticSearch运维技术实践”精彩上演!
Now,温故而知新,一起来回顾吧~
干货来啦,别带着它入睡,赶紧拿小本本记下来吧!
解 惑 篇
在此本萌特别精编了一辑本场沙龙现场讲师和学员的A&Q,分享给大家~
阿里云Elasticsearch实时计算平台实践
Q:使用时一边构建索引一边查询,性能会下降,如何处理?
A:
架构
1)增加clientnode,降低DataNode的CPU开销
2)换更好的硬件,多盘组成RAID或SSD
配置
1)增大translog flush时间间隔
2)增加索引refresh时间
3)调整merge速度,调小index.merge.scheduler.max_thread_count和merge.policy.max_merged_segment,增大merge.policy.segments_per_tier
4)调整mapping,不需要分词的字段不用text改用keyword
具体的还是要根据业务场景去测试和做取舍
Q:ES取消translog还有副本吗?性能提升4倍是指在哪些方面?
A:
elasticbuild是用于离线build,所以不需要副本,依赖的HDFS自身有副本机制;去掉tranlog和内存merge减少IO开销以及网络开销。
Q:写入HDFS的数据,如何恢复到ES?增量如何处理?
A:
在全量结束后会做一个snapshot到OSS上,然后再restore到在线集群。bahamut在拉起全量build任务的时候会记住全量启动的数据时间戳,然后增量任务从记录的时间戳开始补数据。
袋鼠云百亿日志数据下ES性能优化实践
Q:5台节点,master节点经常负载较高,两台MI,三台DI,合理吗?
A:
master建议3台以上类似于zk三节点的原理防止脑裂。
Q:索引规划,分片不超过40G,每个node不要超过3个分片,32G的内存配置下,每个分片1Gbuffer,有测试过吗?
A:
分片越多,写入性能更好,分片更多,分片的管理性能消耗增加,对单个索引来说。
Q:分片初始配置后不要修改?三台服务器最多分片数?
A:
改,除非做reindex的操作,建议最多不要超过12个(包括副本分片)
Q:冷热数据处理,怎么做?如何区分冷数据?查询冷数据体验如何提高?
A:
在我们使用日志的场景中,超过3天或7天的数据定义为冷数据,冷数据迁移到大存储的节点(OSS);查询时需要恢复到热节点,恢复有一定的时间。对用户来说有冷热数据存储的概念。
Elasticsearch的索引和集群隔离实践
Q:索引是每30S刷新一次,刷新的那一刻rp比较高,如何降低影响?
A:
1)建议把数据做拆分,热数据刷新频率高一点,冷数据刷新频率低一点
2)可以适当看下缩短刷新时间能否平滑毛刺
3)数据变更太频繁的内容考虑做下采样,减少更新次数
Q:多索引查询时怎么提高性能?不同索引mapping不一致,解析response耗时长
A:
1)从查询本身上做优化
2)response在业务层做多线程处理;
3)加缓存,经常查询的数据结果记录在缓存中;
4)执行中断,查询一部分结果就返回,查询高并发性能不行的。
滴滴Elasticsearch Query DSL分析系统
Q:mapping优化中对用户使用习惯未知,优化的意义在哪?
A:
ES默认对所有字段建立索引,通过mapping优化,可以自动化的把索引中用户查询不使用的字段不建索引来节省成本。自动化体现在用户新增或者减少字段能被系统自动感知到,从而减少和用户沟通成本。
Q:有哪些用户?查询的索引中不同字段的数据量是不同,此时进行聚合查询怎么办?
A:
滴滴内部使用ES的同学,例如客服,运维和RD。我们会得到查询语句中根据哪个字段进行聚合,另外每个字段基数会由其他服务进行统计,例如根据IP字段进行聚合,由于IP基数过大(count distinct IP)。如果是针对大基数字段进行聚合查询预估消耗内存较大时,就会把这种查询熔断。
Q:还没有数据进来时没有建索引时,是自动生成索引还是动态映射?
A:
每一类数据写入索引前会根据这个索引中索引模板信息进行映射,在索引模板中会定义一些字段对应的类型,例如字符串内容符合date format的字段就会映射成date类型。没有在索引模板中找到的字段其类型由es根据第一次出现这个字段的内容推导,例如字符串自动映射成keyword类型。
Q:复杂的聚合查询如何处理?
A:
聚合查询嵌套不能太深(一般不要超过3层),当然这个跟聚合查询的索引中聚合字段的基数有关,如果字段基数大聚合产生的桶就会有很多,消耗的内存也会很大,需要对消耗内存大的聚合查询语句进行熔断。至于复杂的聚合语句优化,
可以从减少聚合返回的size,合理调整聚合字段顺序,使用date_histogram来代替histogram等。
Q:gateway是自研的吗,是否会考虑开源?
A:
gateway是自研的,后期会开源。