今天重启es后,发现es服务是启动了,但是实时数据并未写入es数据库,查看日志发现,报错如下图
我看了下正在运行的es程序打开了多少文件(4274是es的pid)
然后再网上搜了很多,说是要调整linux的系统,将open file改成655350,
系统这边open files 只有1024,远远小于137820,所以es报错了,
vim /etc/security/limits.conf
在文档最后添加,使其永久生效
soft nofile 655350
hard nofile 655350
我改过后,重启es,es依然报同样的错误,一时不知道怎么办,然后尝试前台启动es后,es正常起来了,
然后,我想起来了,我的es是设置了systemctl 系统服务启动的,然后查看自己的elasticsearch.service文件,如下图
想起来systemctl 服务里面应该要调整es用户最大打开文件数,修改后,完美解决(未修改前只有65535 <137820)
translog过多的问题没有解决,然后观察了一会,es打开文件的数量缓慢上升,唉,还是没有真正解决translog问题,再查查资料把!
补充一下(待验证)
es打开文件过多问题,我突然想到是不是我单节点的索引有一些问题,然后我首先
1.设置默认分片和副本数,确保以后的索引是正常的:
curl -XPUT 'http://localhost:9200/_template/template_http_request_record' -H 'Content-Type: application/json' -d '{"index_patterns": ["*"],"settings": {"number_of_shards": 1,"number_of_replicas": 0}}'
2.清除现有索引的缓存:
进入kibana界面,
清除索引缓存
冲洗索引数据
3.再次查看es打开文件数量,数量已经下降
版权声明:本文为CSDN博主「weixin_44157851」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44157851/article/details/106765115