内存基本要求
参考书籍:[Elasticsearch: 权威指南]节选https://www.elastic.co/guide/cn/elasticsearch/guide/current/hardware.html
进程数和文件句柄数配置
使用命令查看:
vi /etc/security/limits.conf
如果没配置,在文件的后面加上配置
* soft nproc 131072
* hard nproc 131072
* soft nofile 131072
* hard nofile 131072
第一列表示用户,
*
表示所有的用户
soft xxx
:表示警告的设定,可以超过这个设定的值,但是超过后会有警告hard xxx
:表示严格的设定,不允许超过设定的值nproc
:每个用户创建进程数的限制nofile
:每个进程可以打开的文件数限制soft nproc
:单个用户最大进程数量,超过会警告hard nproc
:单个用户最大进程数量,超过会报错soft nofile
:可以打开的文件最大数,超过会警告hard nofile
:可以打开的文件最大数,超过会报错
举例:soft 设为1024,hard设为2048,当你使用数在1到1024之间时可以随便使用,1024到2048时会出现警告信息,大于2048时会直接报错
注意:
- 一般soft的值会比hard小,也可以设置为相等
/etc/security/limits.d/
里面配置会覆盖/etc/security/limits.conf
的配置
只有root用户才有权限修改/etc/security/limits.conf
limits.conf
没有做设定,则默认值是1024
虚拟内存设置
操作系统的默认mmap count
限制是很低的,可能会导致内存不足的异常。所以需要根据需要修改参数
临时配置:
sysctl -w vm.max_map_count=262144
永久配置,找到配置文件
vi /etc/sysctl.conf
进行配置,在文件后面加上
# 设置虚拟内存大小
vm.max_map_count=262144
验证修改的配置:
sysctl -a|grep vm.max_map_count
如果未生效,重新加载配置文件:
sysctl -p
swap分区设置
swap分区是内存不够用的时候,将部分内存上的数据交换到swap空间,以便让系统不会因为内存不够用而导致oom问题
如果要临时紧用swap
swapoff -a
要永久性禁用swap,需要修改/etc/fstab文件,然后将所有包含swap的行注释
另外一种方法就是通过 /etc/sysctl.conf
,将vm.swappiness
设置为1,这可以尽量减少Linux内核swap的倾向,在正常的情况下,不会进行swap,但是在紧急情况下,还是会进行swap操作。
# 禁用内存和磁盘交换
vm.swappiness=1
注意:如果设置
vm.swappiness
为0,表示完全不会swap,在内存不够用时,也不会进行交换
这个配置可以根据需要进行配置,在使用ES时候,可以设置为1,提高性能
如果频繁的将ES进程的内存swap到磁盘,肯定会影响性能,内存的操作都是要求快速完成的,如果内存被swap到了磁盘,会影响系统性能