❄️辽阳中雪1~7℃北京 16/9℃上海 21/18℃广州 31/22℃深圳 32/22℃杭州 19/16℃成都 20/16℃全国天气 »登录

linux系统提示文件描述符错误:Warning: stream_socket_accept(): accept failed: 的解决办法

2025-12-05 15:18 · 全文 1020 字 · 约 3 分钟
文档属性
内容分类资讯
来源www.itlaoli.com
作者李洋博客
阅读计数17 次

这个错误的核心是进程打开的文件描述符(File Descriptor)数量超过了系统/进程的限制,Linux下所有套接字(socket)、文件、管道等都会占用文件描述符,以下是完整的排查和解决步骤:

查看系统级最大文件描述符限制

查看当前用户的软/硬限制(PHP进程所属用户,通常是www/www-data)

# 查看软限制(当前生效的限制、查看硬限制(最大可调整到的限制)

> 注:默认软限制通常是1024,硬限制是4096,这是导致报错的常见原因。

定位报错的PHP进程,查看其打开的文件数

# 找到sc2.php对应的进程PID(替换为实际端口/脚本名)

# 查看该进程打开的文件描述符数量(替换PID为实际值)

查询完成后如图:目前在用的链接数量是【77】个,当然这是测试机,不是正常,不然这点数量不可能崩溃的哈。

立即生效,重启后失效,临时提升当前用户的软/硬限制(仅当前会话)

设置完成后如图,当然了,临时设置,有些操作命令之后可能失效了,不仅仅限于重启操作,临时过渡使用。

关闭终端页面,重新查看,是的不需要重启,关闭终端就恢复了,不信你看,是不是恢复默认的1024啦。

重启后生效,修改用户级限制配置(/etc/security/limits.conf)

# 编辑配置文件(root权限)

添加以下内容(针对PHP运行用户,比如www,*表示所有用户):

在 /etc/security/limits.d/*.conf 配置文件可能是(*-nproc.conf)

修改系统内核参数(/etc/sysctl.conf)

# 编辑内核配置(root权限)

重启之后我们再次运行命令:

调整Web服务器限制(Nginx)

编辑`nginx.conf`

宝塔后台, 软件 商店,找到NGINX,点击设置,找到【性能调整】,找到【worker_connetctions】设置最大并发连接数,提升worker进程的文件描述符限制

宝塔面板的话找到【服务】【重载配置】即可。

1. 优先通过`limits.conf`和`sysctl.conf`永久提升文件描述符限制;

2. 必须修复PHP代码中文件/套接字未关闭的泄漏问题(治本);

curl 升级:降低安全风险,开启更高效稳定网络体验

记录linux系统安装和部署国产达梦DM8数据库的相关步骤信息

当前文章地址:http://rjbmgj.cn/text/7080/27526.asp

↑