弹性搜索过程的最大文件描述符太低

时间:2017-10-16 13:12:46

标签: java linux elasticsearch

无法解决这些问题:

[2017-10-16T13:54:23,381][WARN ][o.e.b.BootstrapChecks    ] [node-1] max 
file descriptors [65000] for elasticsearch process is too low, increase to 
at least [65536]
[2017-10-16T13:54:23,382][WARN ][o.e.b.BootstrapChecks    ] [node-1] max 
number of threads [1024] for user [appadm01] is too low, increase to at 
least [2048]
[2017-10-16T13:54:23,382][WARN ][o.e.b.BootstrapChecks    ] [node-1] system 
call filters failed to install; check the logs and fix your configuration or 
disable system call filters at your own risk

我执行了sysctl -w fs.file-max = 65536,但我得到同样的东西。

9 个答案:

答案 0 :(得分:2)

尝试一下:(从2-3个不同的来源获得它)

添加$ES_HOME/config/elasticsearch.yml

network.host: 0.0.0.0
http.port: 9200
transport.host: localhost
transport.tcp.port: 9300

如果是本地开发设置,请尽可能使用较少的内存选项:

$ES_HOME/config/jvm.options中添加/修改

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms512m
-Xmx512m

答案 1 :(得分:2)

对于那些使用docker运行弹性搜索的用户,可以通过如下所示的docker run命令设置ulimit。

docker run --ulimit nofile=65536:65536 -p 9200:9200 --name elastic-search docker.elastic.co/elasticsearch/elasticsearch:6.4.2

希望这对码头用户有帮助

答案 2 :(得分:1)

只需创建一个像这样的systemd服务,仔细观察ulimit nofile设置: vi /etc/systemd/system/elasticsearch.service:

[Unit]
Description=Spin ES Service
After=network.target

[Service]
User=<user name>
Group=<group name>
Type=simple
ExecStart=/bin/bash /home/<user>/elasticsearch-6.4.3/bin/elasticsearch
Restart=on-failure
RestartSec=5s
LimitAS=infinity
LimitRSS=infinity
LimitCORE=infinity
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

ExecStart需要在其中加上“ $ bash”,然后是$ ES_HOME / bin / elasticsearch

此外,我为用户设置的是这些:

ulimit -n 65536

/etc/sysctl.conf

fs.file-max = 2097152
vm.max_map_count = 262144
vm.swappiness = 1

其次:

sudo sysctl -p

答案 3 :(得分:0)

您是否阅读过that page

它说:

在启动Elasticsearch之前以root身份设置ulimit -n 65536,或在/etc/security/limits.conf中将nofile设置为65536。

答案 4 :(得分:0)

只需将/etc/security/limits.conf内容更新为以下内容

checked={props.value}

并删除/etc/security/limits.d/nproc.conf

的内容

不要忘记重新登录外壳程序以获取限制。

答案 5 :(得分:0)

在配置声纳仪时,我也遇到了同样的问题,并且能够通过在/etc/systemd/system/sonarqube.service文件中添加 LimitNOFILE = 65536 参数来解决该问题。 >

[Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=forking

ExecStart=/opt/sonarqube/sonarqube-7.9.1/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/sonarqube-7.9.1/bin/linux-x86-64/sonar.sh stop

User=sonarqube
Group=sonarqube
**LimitNOFILE=65536**
Restart=always

[Install]
WantedBy=multi-user.target

答案 6 :(得分:0)

如果您运行SonarQube,本指南将有所帮助: SonarQube Guide

答案 7 :(得分:0)

为我工作。

如果要增加ulimit -n显示的限制,请修改以下文件。

  1. /etc/systemd/user.conf

  2. /etc/systemd/system.conf

在两个文件中都另外添加以下行

  DefaultLimitNOFILE=65536
  1. /etc/security/limits.conf中包含以下几行

             *  soft    nofile  65536
             *  hard    nofile  65536
             elasticsearch   soft    nofile  65536
             elasticsearch   hard    nofile  65536
             elasticsearch   memlock unlimited
    

答案 8 :(得分:0)

我试过了,对我有用

sudo sysctl -w vm.max_map_count=262144