elasticsearch 进程的最大文件描述符太低

F.B*_*BOU 15 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
Run Code Online (Sandbox Code Playgroud)

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

aru*_*007 12

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

docker run --ulimit nofile=65536:65536 -p 9200:9200 --name elastic-search docker.elastic.co/elasticsearch/elasticsearch:6.4.2
Run Code Online (Sandbox Code Playgroud)

希望这会帮助 docker 用户


mrt*_*ale 10

试试这个:(从 2-3 个不同的来源得到它)

加入 $ES_HOME/config/elasticsearch.yml

network.host: 0.0.0.0
http.port: 9200
transport.host: localhost
transport.tcp.port: 9300
Run Code Online (Sandbox Code Playgroud)

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

添加/修改 $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
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这对我有用,最初我只添加了“network.host:0.0.0.0”。添加上述所有内容后,它可以正常工作,没有任何问题。非常感谢。 (3认同)

小智 6

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

elasticsearch   soft    nofile          65536
elasticsearch   hard    nofile          65536
elasticsearch   memlock unlimited
Run Code Online (Sandbox Code Playgroud)

并删除 /etc/security/limits.d/nproc.conf 的内容

不要忘记重新登录 shell 以应用限制。


kha*_*nna 5

只需创建一个这样的 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
Run Code Online (Sandbox Code Playgroud)

ExecStart 需要有“which bash”后跟您的 $ES_HOME/bin/elasticsearch

此外,我对用户的设置如下:

ulimit -n 65536
Run Code Online (Sandbox Code Playgroud)

/etc/sysctl.conf

fs.file-max = 2097152
vm.max_map_count = 262144
vm.swappiness = 1
Run Code Online (Sandbox Code Playgroud)

其次是:

sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)


小智 5

我在配置 sonarqube 时也遇到了同样的问题,并且能够通过在 /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
Run Code Online (Sandbox Code Playgroud)


dad*_*net -2

你读过那一页吗?

它说:

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

  • 即使更新 ulimit 后,结果也是一样的。`elasticsearch 进程的最大文件描述符 [4096] 太低,至少增加到 [65536]` (5认同)