面试题答案
一键面试关键配置文件及作用
- elasticsearch.yml
- 集群配置:通过
cluster.name
参数定义集群名称,确保所有节点属于同一个集群。这是节点能够相互发现并组成集群的基础,不同名称的节点无法加入同一集群。 - 节点配置:
node.name
设置节点的名称,便于在集群中识别和管理单个节点。node.master
和node.data
参数用于指定节点的角色,node.master
为true
的节点有资格参与主节点选举,node.data
为true
的节点负责存储数据。 - 网络配置:
network.host
指定节点绑定的IP地址,可设置为具体IP或0.0.0.0
以绑定所有可用网络接口。http.port
设置HTTP服务端口,默认9200,用于外部客户端与节点进行通信。
- 集群配置:通过
- jvm.options
- 内存设置:通过
-Xms
和-Xmx
参数设置JVM初始堆大小和最大堆大小。合适的内存设置对ElasticSearch性能至关重要,过小可能导致频繁GC影响性能,过大可能引发OOM(OutOfMemory)错误。例如,一般建议将-Xms
和-Xmx
设置为相同值,且不超过物理内存的50%,同时不超过32GB(因为超过32GB JVM会使用完全不同的内存寻址方式,可能影响性能)。 - 垃圾回收器选择:可以选择不同的垃圾回收器,如CMS(Concurrent Mark Sweep)或G1(Garbage - First)。不同的垃圾回收器在性能、停顿时间等方面有不同表现,选择合适的垃圾回收器有助于优化ElasticSearch的运行效率。
- 内存设置:通过
- log4j2.properties
- 日志级别配置:可以设置不同组件的日志级别,如
rootLogger.level = info
设置根日志级别为info
。较低的日志级别(如debug
)会记录更多详细信息,有助于故障排查,但可能产生大量日志文件影响性能;较高的日志级别(如error
)只记录错误信息,适合生产环境减少日志量。 - 日志输出配置:定义日志输出的位置和格式,例如可以配置日志输出到文件,并且指定文件的路径、滚动策略等,便于后续对节点运行状态进行分析和问题追溯。
- 日志级别配置:可以设置不同组件的日志级别,如