面试题答案
一键面试- 文档路由计算
- 原因:Elasticsearch 需要根据文档的
_id
计算其应该存储到哪个分片上。如果路由算法复杂或计算量较大,会消耗额外的 CPU 资源,特别是在高并发写入大量文档时,频繁的路由计算可能成为性能瓶颈。
- 原因:Elasticsearch 需要根据文档的
- 索引缓冲区
- 原因:新写入的文档首先会存储在索引缓冲区。当缓冲区满或者达到一定时间间隔时,才会将数据刷新到磁盘生成新的段。如果缓冲区设置过小,会导致频繁的刷新操作,而每次刷新都会涉及磁盘 I/O 操作,磁盘 I/O 通常比内存操作慢很多,从而影响整体性能。
- 段合并
- 原因:Elasticsearch 为了提高搜索性能,会将多个小的段合并成大的段。段合并是一个 I/O 和 CPU 密集型操作,在合并过程中,需要读取多个段的数据,在内存中进行合并,然后再写回磁盘。如果合并策略不合理,例如频繁触发合并或者一次合并的数据量过大,会占用大量的系统资源,导致性能下降。
- 磁盘 I/O
- 原因:无论是文档的持久化存储,还是段的合并结果写入磁盘,都依赖磁盘 I/O。如果磁盘的读写速度慢,比如使用机械硬盘而非固态硬盘,或者磁盘 I/O 负载过高,会使得数据写入和段合并操作的速度受限,成为性能瓶颈。