Elasticsearch 性能优化总结
in Note with 0 comment
Elasticsearch 性能优化总结
in Note with 0 comment

elasticsearch 做了下面五点优化:

五点优化

使用 OracleJDK

1529911561932-e268bfff-f669-4d7f-a1fe-842d91256d49-image-resized.png

为什么用 OracleJDK ?

统一了机器的物理配置

一个机器一个节点,力求每个节点的物理配置一致,避免每个节点的表现不一致的情况。

采用最新版本

Elasticsearch 以前是5.6.3,现在是6.2.4。这个是必须的,新版本尤其是大版本的更新通常是会伴有性能优化等内容。

调整配置项

limit 配置:

# Disabling Swapping
LimitMEMLOCK=infinity

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=1048575

# Specifies the maximum number of processes
LimitNPROC=4096

# Specifies the maximum size of virtual memory
LimitAS=infinity

# Specifies the maximum file size
LimitFSIZE=infinity

配置 31G JVM heap space

-Xms31g
-Xmx31g

服务发现配置:

discovery.zen.ping_timeout: 30s
discovery.zen.fd.ping_interval: 10s
discovery.zen.fd.ping_timeout: 60s
discovery.zen.fd.ping_retries: 6

定期清除 cache 和 page

执行下面命令,每小时定时清理内存,需要注意的是,每台节点机器,不要都配置到0分处理,要随机分开处理

echo '0 * * * * /usr/bin/sync && /usr/bin/echo 3 > /proc/sys/vm/drop_caches' > /var/spool/cron/root

优化效果:

给 API 带来效果:

明显 api 查询耗时毛刺磨平了,平均耗时在 200ms 以下,最大耗时也在 6s 以下,未优化前的平均耗时出现 6s 的毛刺,最大耗时也出现 60s 的毛刺。

总结:查询耗时大幅度下降,性能毛刺也被磨平。

给分析服务带来效果:

监听服务:
保存耗时由以前的 20~50ms 缩短到现在 3~10ms

分析服务:
观察日志,发现分析耗时基本上都是在 50ms 内完成分析,最慢也在 1s 内完成分析。

总结:分析和监听服务也不再有性能毛刺,分析条件获取也非常快,分析结果保存也非常快。


👊 收官~

Responses