news 2026/10/6 16:00:27

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
达梦数据库-报错-14-EMFILE error! The per-process limit of open file descriptors has been reached.

目录

一、环境信息

二、问题描述

三、问题截图

四、问题分析

1、线程查找

2、会话视图查看

3、CREATE类型描述

4、进程打开文件数

5、连接IP查看

五、解决方法


一、环境信息

名称值
CPUx86
操作系统KylinV10
DM版本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监听所有 IPv6;127.0.0.1:5236仅本机回环
Peer Address:Port对端地址和端口LISTEN状态通常为0.0.0.0:*或[::]:*;已连接时为客户端 IP 和端口
Process占用该套接字的进程信息如users:(("mysqld",pid=1234,fd=32));权限不足时可能为空或显示-
状态显示全称含义常见场景
LISTENListen监听状态,等待客户端连接请求服务器端套接字,通常用-l查看
SYN-SENTSYN Sent已发送 SYN,等待对端确认,正在建立连接客户端发起连接时的中间状态
SYN-RECVSYN Received已收到 SYN 并回复 SYN+ACK,等待最后 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驱动下载汇总》

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/6 15:59:38

VueUse useSortable 实战指南:在 Vue 3 中轻松实现列表拖拽排序

前端 【免费下载链接】vueuse Collection of essential Vue Composition Utilities for Vue 3 项目地址: https://gitcode.com/gh_mirrors/vu/vueuse 点击查看 免费下载 导读 useSortable 是 VueUse vueuse/integrations 包中针对 SortableJS 的响应式封装&#x…

作者头像 李华
网站建设 2026/10/6 15:57:37

GhostTrack 免费安装教程:5 分钟跑通 IP 查询

GhostTrack 免费安装教程:5 分钟跑通 IP 查询 【免费下载链接】GhostTrack Useful tool to track location or mobile number 项目地址: https://gitcode.com/GitHub_Trending/gh/GhostTrack GhostTrack 是一款免费的 Python 小工具,主打 OSINT 信…

作者头像 李华
网站建设 2026/10/6 15:48:49

为 .NET 客户端接入 LLM:mcp-for-beginners 03-llm-client 实战指南

教程文档人工智能 【免费下载链接】mcp-for-beginners This open-source curriculum introduces the fundamentals of Model Context Protocol (MCP) through real-world, cross-language examples in .NET, Java, TypeScript, JavaScript, Rust and Python. Designed for deve…

作者头像 李华
网站建设 2026/10/6 15:40:24

视频目标跟踪标注避坑指南:EasyDL关键帧与消失帧实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/6 15:39:40

微小型双足机器人强化学习实战:从仿真训练到真机部署

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华