Lucene 使用了 大量的 文件。 同时,Elasticsearch 在节点和 HTTP 客户端之间进行通信也使用了大量的套接字(注:sockets)。 所有这一切都需要足够的文件描述符。
    增加你的文件描述符,设置一个很大的值,如 64,000。

    1. GET /_nodes/process
    2. {
    3. "cluster_name": "elasticsearch__zach",
    4. "nodes": {
    5. "TGn9iO2_QQKb0kavcLbnDw": {
    6. "name": "Zach",
    7. "transport_address": "inet[/192.168.1.131:9300]",
    8. "host": "zacharys-air",
    9. "ip": "192.168.1.131",
    10. "version": "2.0.0-SNAPSHOT",
    11. "build": "612f461",
    12. "http_address": "inet[/192.168.1.131:9200]",
    13. "process": {
    14. "refresh_interval_in_millis": 1000,
    15. "id": 19808,
    16. "max_file_descriptors": 64000,
    17. "mlockall": true
    18. }
    19. }
    20. }
    21. }

    max_file_descriptors 字段显示 Elasticsearch 进程可以访问的可用文件描述符数量。

    Elasticsearch 对各种文件混合使用了 NioFs( 注:非阻塞文件系统)和 MMapFs ( 注:内存映射文件系统)。请确保你配置的最大映射数量,以便有足够的虚拟内存可用于 mmapped 文件。这可以暂时设置:
    sysctl -w vm.max_map_count=262144
    或者你可以在 /etc/sysctl.conf 通过修改 vm.max_map_count 永久设置它。