ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

达梦数据库-报错-14-EMFILE error! The per-process limit of open file descriptors has been reached.

达梦数据库-报错-14-EMFILE error! The per-process limit of open file descriptors has been reached. 目录一、环境信息二、问题描述三、问题截图四、问题分析1、线程查找2、会话视图查看3、CREATE类型描述4、进程打开文件数5、连接IP查看五、解决方法一、环境信息名称值CPUx86操作系统KylinV10DM版本DM Database Server 64 V8二、问题描述生产环境备节点日志大量打印告警EMFILE error! The per-process limit of open file descriptors has been reached。三、问题截图我们可以看到是924661、924662两个线程打印的告警。四、问题分析1、线程查找dm_sched_thd 调度线程每秒钟轮询一次主要负责接管数据库内部所有需要定时调度的任务调度线程具备唤醒工作线程、向任务队列中添加任务队列、动态缓冲区检查、SQL缓存清理等权限。dm_lsnr_thd 达梦数据库中监听线程的监听端口范围为1024 - 65534;默认监听的端口为5236主要的任务是在服务器端口上进行循环监听一旦有来自客户的连接请求监听线程被唤醒并生成一个会话申请任务加入工作线程的任务队列等待工作线程进行处理。它在系统启动完成后才启动并且在系统关闭时首先被关闭。为了保证在处理大量客户连接时系统具有较短的响应时间监听线程比普通线程优先级更高。大部分都是监听线程在报所以查一下相关会话视图。2、会话视图查看很多CREATE类型的连接。3、CREATE类型描述4、进程打开文件数ll /proc/pidof dmserver/fd |wc -l我这边只截取了一分部打开文件数在1W-6W之间波动说明达梦的日志告警无误。5、连接IP查看ss -tanp |grep :5236关注SYN-RECV状态的201结尾的IP就是需要去关注的。列名含义说明 / 常见值StateTCP 连接状态LISTEN监听、ESTAB已建立、TIME-WAIT、CLOSE-WAIT、SYN-SENT等Recv-Q接收队列对LISTEN已完成握手但未被accept()的连接数对已连接应用未读取的数据字节数Send-Q发送队列对LISTEN监听队列最大长度即backlog对已连接已发送但未被对端 ACK 的数据字节数Local Address:Port本地地址和端口如0.0.0.0:5236监听所有 IPv4[::]:5236监听所有 IPv6127.0.0.1:5236仅本机回环Peer Address:Port对端地址和端口LISTEN状态通常为0.0.0.0:*或[::]:*已连接时为客户端 IP 和端口Process占用该套接字的进程信息如users:((mysqld,pid1234,fd32))权限不足时可能为空或显示-状态显示全称含义常见场景LISTENListen监听状态等待客户端连接请求服务器端套接字通常用-l查看SYN-SENTSYN Sent已发送 SYN等待对端确认正在建立连接客户端发起连接时的中间状态SYN-RECVSYN Received已收到 SYN 并回复 SYNACK等待最后 ACK服务器端收到连接请求后的中间状态ESTABEstablished连接已建立可以正常传输数据正常的活跃连接FIN-WAIT-1FIN Wait 1主动关闭方已发送 FIN等待 ACK 或对端 FIN本地主动关闭连接FIN-WAIT-2FIN Wait 2主动关闭方已收到 ACK等待对端发送 FIN本地主动关闭连接对端尚未关闭CLOSE-WAITClose Wait被动关闭方收到 FIN 并回复 ACK等待本地应用关闭连接对端关闭了连接但本地应用还未关闭CLOSINGClosing双方同时关闭收到 FIN 后发送 ACK等待 ACK双方同时尝试关闭连接LAST-ACKLast Acknowledgment被动关闭方已发送 FIN等待最后一个 ACK被动关闭方准备完成关闭TIME-WAITTime Wait主动关闭方完成关闭后等待 2MSL 处理残留数据包连接关闭后短暂保留常见于高并发短连接CLOSEDClosed连接已完全关闭通常不会在ss输出中显示因为套接字已释放UNKNOWNUnknown状态未知或无法识别少见可能因权限或内核状态异常五、解决方法CREATE 类型表示会话对象已创建但还不能使用。该状态的主要原因是客户端驱动版本与数据库服务器版本不匹配导致网络通信异常会话在建立过程中无法完成初始化流程从而停留在 CREATE 状态。具体来说当客户端使用的达梦数据库驱动版本过低或与服务器端不兼容时连接建立过程中的消息交互可能出现异常使得会话对象虽然已在内存中创建但无法进入正常的启动STARTUP或空闲IDLE状态最终表现为大量 CREATE 状态的会话。建议是将ss命令排查到的IP所部署的连接数据库程序更换最新的驱动。最新驱动链接《达梦数据库-学习-36-API驱动下载汇总》
返回列表