【踩坑日记】Docker elasticsearch too many open files问题处理

news/2024/7/7 5:55:17 标签: elasticsearch, docker

项目场景:

使用单机ES作为日志存储数据库,每日生成一个日期索引,由于每日的数据量可能较大,有时候需要进行磁盘扩容操作,本次问题记录还未找到根本的触发原因,后续找到原因后再进行记录


问题描述

每日创建es索引时发现报错:elasticsearch. java.net.SocketTimeoutException: 30,000 milliseconds timeout;查询es数据时也出现请求返回较慢和连接超时的情况


原因分析:

猜测问题产生的情况

1. 大量请求插入es

2. 内存不足

3. 磁盘不足

解决方案:

 1,停止插入请求,排除大量请求问题

2.查看内存和磁盘使用情况,排除内存和磁盘问题影响

3. 查看docker中ES的日志发现有大量的:too many open files 错误日志,经过查询可能是打开句柄书超过系统设置的句柄总数导致。

详细排查流程如下:
查看系统总句柄数
ulimit -Sn
#【结果:65536】

查看ES容器进程详情(获取ES的进程pid)
docker top <ES容器ID>
#【结果:2205】

查看ES进程目前的文件打开数以及限制
cat /proc/2205/limits
#【结果:65536】

查看进程使用句柄数
ls -l /proc/2205/fd/* |wc -l
#【结果:65535】

#可以看出ES容器使用的句柄数已经基本等于系统最大的句柄总数,所以才导致too many open files的异常出现

#临时动态修改ES当前进程的nofile限制
prlimit --pid 2205 --nofile=655360:655360    #将pid进程的nofile限制调整为655360 

# docker run 方式修改进程句柄数限制
docker run -d -p 9200:9200 -p 9300:9300  --restart=always \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms31g -Xmx31g" \
-e "xpack.security.enabled=false" \
--name elasticsearch \
--ulimit nofile=655350:655350  \...




作者这里是使用:临时修改进程最大句柄数的方式解决问题,修改后创建索引和查询数据的问题得到解决;

总结

这边只是记录作者这边问题的处理方式,目前为何句柄数会使用这么多还没找到问题,

查看了一篇文章的说法是:在系统扩容的过程中,会有大量的数据被平衡到新的节点,这样会消耗大量的IO,同时,elk集群中的新数据,由于没有对数据节点做冷热区分,会源源不断的写入到新节点,这就造成了新节点中的段会非常多,旧的段无法合并,新的数据又在源源不断的写入,这就造成了文件数会越来越多,因此出现了上述问题; 目前不确定是不是这个原因,因为我是单机ES

参考链接:解决elasticsearch“Too many open files in system”问题-腾讯云开发者社区-腾讯云


http://www.niftyadmin.cn/n/5051994.html

相关文章

学生宿舍管理系统(前端java+后端Vue)实现-含前端与后端程序

界面介绍 登录 ###宿舍管理 ###菜单管理 ###角色管理 ###班级管理

线程调度算法?

Java 中线程调度算法通常是由底层操作系统来实现的,因为Java的线程是映射到操作系统线程的。因此,Java本身并没有自己的线程调度算法,而是依赖于底层操作系统的调度机制。不同的操作系统可能采用不同的线程调度算法。 一般来说,操作系统的线程调度算法可以分为以下几种常见…

Android AMS——创建APP进程(五)

接上一篇,在 ActivityTaskSupervisor 中会判断进程是否存在,如果进程不存在,则会创建进程,执行 startProcessAsync() 方法。如果进程存在,则执行 realStartActivityLocked() 方法。在APP 的启动时,进程是不存在的。所以我们先来分析一下进程不存在的情况。 一、创建进程…

LabVIEW开发实时自动化多物镜云计算全玻片成像装置

LabVIEW开发实时自动化多物镜云计算全玻片成像装置 数字病理学领域正在迅速发展&#xff0c;这主要是由于计算机处理能力、数据传输速度、软件创新和云存储解决方案方面的技术进步。因此&#xff0c;病理科室不仅将数字成像用于图像存档等简单任务&#xff0c;还用于远程病理学…

R语言绘制环状柱状堆积图+分组+显著性

无叠加、显著性的代码&#xff1a; #设置工作环境 rm(listls()) setwd("D:/Desktop/0000/code-main/条形图")#加载R包 library(ggplot2) # Create Elegant Data Visualisations Using the Grammar of Graphics library(tidyverse) # Easily Install and Load the Ti…

k8s安装与使用

一、Docker安装 注意docker的版本要和k8s版本对应 https://blog.csdn.net/Myx74270512/article/details/128235051 二、k8s安装 更新yum sudo yum update添加Kubernetes的yum源 sudo vi /etc/yum.repos.d/kubernetes.repo## 添加如下内容 [kubernetes] nameKubernetes bas…

python 多个proto文件import引用时出现ModuleNotFoundError错误

问题描述 my_proto文件夹里有两个proto文件&#xff0c;book.proto想要引用person.proto文件中的Person&#xff0c;如下 book.proto syntax "proto2";import "person.proto"; // 导入person.proto文件message Book {optional string name 1;optional …

开源一个基于的rt-thread系统的烟感采集系统

一、硬件 CPU&#xff1a;stm32f401 NBIOT模块&#xff1a;移远BC26 存储&#xff1a;W25Q128JVSIQTR 扩展&#xff1a;HC595输出&#xff0c;165输入 二、软件应用 FAL&#xff1a;分区 littlefs: 应用存储用的文件系统 EashFlash&#xff1a;日记存储、系统变量存储 kawaii_…