原文地址: https://www.elastic.co/guide/cn/elasticsearch/guide/current/_file_descriptors_and_mmap.html, 版权归 www.elastic.co 所有
英文版地址: https://www.elastic.co/guide/en/elasticsearch/guide/current/_file_descriptors_and_mmap.html
英文版地址: https://www.elastic.co/guide/en/elasticsearch/guide/current/_file_descriptors_and_mmap.html
请注意:
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
文件描述符和 MMap (File Descriptors and MMap)edit
Lucene 使用了非常大量的文件。 同时,Elasticsearch 在节点和 HTTP 客户端之间进行通信也使用了大量的套接字(sockets)。 所有这一切都需要足够的文件描述符。
可悲的是,许多现代的 Linux 发行版本,每个进程默认只允许 1024 个文件描述符。 这对即使是一个小的 Elasticsearch 节点来说都实在是太低了,更不用说处理数百个索引的节点。
你应该增加文件描述符的数量到一个很大的值,比如 64,000。 这个过程非常困难,它高度依赖于你的特定操作系统和发行版本。 请参考操作系统文档来确定如何最好地修改允许的文件描述符数量。
一旦你认为已经改变了它,检查 Elasticsearch,以确保它确实有足够的文件描述符:
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 } } } }
Elasticsearch 对各种文件混合使用了 NioFs( 注:非阻塞文件系统)和 MMapFs(注:内存映射文件系统)。 请确保配置了最大映射数量,以便有足够的虚拟内存可用于 mmapp 文件。这可以暂时设置:
sysctl -w vm.max_map_count=262144
或者你可以通过修改/etc/sysctl.conf
文件中的vm.max_map_count
来永久设置它。