MST

星途 面试题库

面试题:ElasticSearch GET API实时性保障的配置与优化

假设在高并发读场景下,发现GET API获取的数据实时性出现问题,你会从哪些ElasticSearch的配置参数方面去进行排查与优化,以保障GET API的实时性?请举例说明至少三个关键配置参数及其作用。
40.3万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试
  1. refresh_interval
    • 作用:控制Elasticsearch自动刷新索引的频率。刷新操作会将内存中的数据写入磁盘,使数据可被搜索到。如果该值设置过大,数据写入磁盘不及时,导致GET API获取的数据实时性差;如果设置过小,会增加I/O开销。例如,将refresh_interval从默认的1s调整为0s,可实现实时刷新,但这会对性能有较大影响,一般在测试环境或对实时性要求极高且数据量较小的场景下使用;在生产环境中,可根据业务需求适当调小,比如从1s调整为0.5s ,在一定程度上提高实时性,同时平衡性能。
  2. index.translog.durability
    • 作用:控制事务日志(translog)的持久化策略。事务日志用于保证数据的一致性和恢复能力。其有两个主要取值requestasyncrequest模式下,每次写入操作都会同步刷新事务日志到磁盘,保证数据不丢失,但性能相对较低;async模式下,事务日志会异步刷新到磁盘,性能较高,但在系统崩溃等异常情况下可能会丢失少量数据。在高并发读场景下,若要提高实时性,可以考虑使用request模式,确保数据尽快持久化,从而提高GET API获取数据的实时性。
  3. index.unassigned.node_left.delayed_timeout
    • 作用:当一个节点离开集群时,Elasticsearch会等待一段时间,以便确定该节点是否真的离开了。这个参数设置等待的时间。如果设置时间过长,当节点离开后,数据重新分配和恢复的时间就会变长,导致在这段时间内GET API获取的数据可能不准确或不完整,实时性受到影响。适当减小这个值,如从默认的5分钟调整为1分钟,可加快集群对节点离开的响应速度,更快地恢复数据的正常状态,保障GET API的实时性。