Lucene 使用了 大量的 文件。 同时,Elasticsearch 在节点和 HTTP 客户端之间进行通信也使用了大量的套接字(注:sockets)。 所有这一切都需要足够的文件描述符。
增加你的文件描述符,设置一个很大的值,如 64,000。
GET /_nodes/process{"cluster_name": "elasticsearch__zach","nodes": {"TGn9iO2_QQKb0kavcLbnDw": {"name": "Zach","transport_address": "inet[/192.168.1.131:9300]","host": "zacharys-air","ip": "192.168.1.131","version": "2.0.0-SNAPSHOT","build": "612f461","http_address": "inet[/192.168.1.131:9200]","process": {"refresh_interval_in_millis": 1000,"id": 19808,"max_file_descriptors": 64000,"mlockall": true}}}}
max_file_descriptors 字段显示 Elasticsearch 进程可以访问的可用文件描述符数量。
Elasticsearch 对各种文件混合使用了 NioFs( 注:非阻塞文件系统)和 MMapFs ( 注:内存映射文件系统)。请确保你配置的最大映射数量,以便有足够的虚拟内存可用于 mmapped 文件。这可以暂时设置:
sysctl -w vm.max_map_count=262144
或者你可以在 /etc/sysctl.conf 通过修改 vm.max_map_count 永久设置它。
