elasticsearch配置等优化
文章发布较早,内容可能过时,阅读注意甄别。
# 1,加大内存分配。
一开始索引什么的都不多,量不大,所以都很轻松,后来量越来越大,默认的配置就有点吃不消了,打开一个页面,查询压力就会非常大。
这个时候可以通过加大 es 的 jvm 内存来优化。
默认情况下,Elasticsearch 告诉 JVM 使用最小和最大大小为 1 GB 的堆。迁移到生产环境时,配置堆大小以确保 Elasticsearch 有足够的堆可用是很重要的。
Elasticsearch 将通过(最小堆大小)和(最大堆大小)设置分配 jvm.options 中指定的整个堆 。Xms
,Xmx
可设置的值取决于服务器上可用的 RAM 量。一些好的建议是:
- 将最小堆大小(Xms)和最大堆大小(Xmx)设置为彼此相等。
- Elasticsearch 可用的堆越多,它可用于缓存的内存就越多。但请注意,过多的堆可能会使您陷入长时间的垃圾收集暂停。
- 设置 Xmx 为不超过物理 RAM 的 50%,以确保有足够的物理 RAM 留给内核文件系统缓存。
- 最大内存不要超过 32G (opens new window),跨 32G 时,有一个现象,使用更多的内存,比如 40G,效果还不如 31G!
比如我的主机是 16 核 32G 的主机,那么这时更改一下配置:
vim /etc/elasticsearch/jvm.options
-Xms16g
-Xmx16g
-Xss128m
1
2
3
4
2
3
4
然后重启 es,会发现快很多了。
关于这一点,可以参考官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
# 2,修改系统允许的最大文件打开数。
#并发连接数
#echo "root soft nofile 65535" >> /etc/security/limits.conf
#echo "root hard nofile 65535" >> /etc/security/limits.conf
#echo "* soft nofile 65535" >> /etc/security/limits.conf
#echo "* hard nofile 65535" >> /etc/security/limits.conf
echo -e "root soft nofile 65535\nroot hard nofile 65535\n* soft nofile 65535\n* hard nofile 65535\n" >> /etc/security/limits.conf
sed -i 's#4096#65535#g' /etc/security/limits.d/20-nproc.conf
1
2
3
4
5
6
7
2
3
4
5
6
7
一个是修改最大文件打开数,一个是最大进程数,其中 root 表示管理员,*表示普通用户。
更改之后重启主机即可。
上次更新: 2024/11/19, 23:11:42