解决 Swoole 服务报错 Too many open files 文件句柄超出系统限制-阿里云开发者社区

开发者社区> 沈唁> 正文

解决 Swoole 服务报错 Too many open files 文件句柄超出系统限制

简介: 如果在 Swoole 的日志中遇到了 `Too many open files` 这种报错,不要慌,在开发 TCP 网络应用的过程中,经常会遇到`Too many open files`这个问题。
+关注继续查看

如果在 Swoole 的日志中遇到了 Too many open files 这种报错,不要慌,在开发 TCP 网络应用的过程中,经常会遇到Too many open files这个问题。

这说明你的程序以达到 Linux 所允许的打开文件数上限。需要修改 ulimit 设置

可以使用lsof查看进程打开的文件句柄数:

# 将 PID 修改为你要检查的进程ID
lsof -p PID | wc -l

也可以去掉| wc -l来检查服务打开了那些文件句柄,未进行关闭。

可以使用ulimit -n查看当前设置为多少

[root@shenyan ~]# ulimit -n
100001

如果过小,需要进行调整,Swoole 文档中推荐 ulimit -n 要调整为 100000 甚至更大。

那么如何修改呢?

命令行下执行 ulimit -n 100000 即可修改。

但是需要注意,有时候这种修改方法仅当前终端有效,关闭或者重新开个一个终端就会恢复之前的设置。

这时就需要修改 /etc/security/limits.conf,加入

* soft nofile 262140
* hard nofile 262140
root soft nofile 262140
root hard nofile 262140
* soft core unlimited
* hard core unlimited
root soft core unlimited
root hard core unlimited

修改 limits.conf 文件后,需要重启系统生效。

这样操作完成以后,如果还是报错 Too many open files,那么就可以试试检查运行中的进程限制:

# 将 PID 修改为你要检查的进程ID
cat /proc/PID/limits

如果这里的Max open files过小,也是需要进行修改的。

这种情况大多数出现于使用supervisor等工具进行管理的时候,supervisor启动服务默认的minfds配置是1024,所以会出现 Too many open files

使用systemd的话,也是同样的道理,需要修改LimitNOFILE。如果不设置或者设置为LimitNOFILE=unlimited(不识别),则默认为1024

而这里也要注意设置LimitNOFILE=infinity就等于LimitNOFILE=65536,对于需求 10 万以上文件打开数的人,一定要自行设定。

综上所述,遇到Too many open files时的解决方法:

  1. ulimit -n
  2. supervisorminfds
  3. systemdLimitNOFILE

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
VM启动报错Cannot open the disk,Failed to lock the file
在windows下运行VMware创建的虚拟机时出错,无法运行。 错误提示大概为: Failed to lock the fileCannot open the disk 'D:\Windows Server 2008 R2 x64.vmdk' or one of the snapshot disks it depends on. 解决方法:        把虚拟机文件夹里【.lc
1007 0
【Hadoop Summit Tokyo 2016】文件格式的基准——Avro, JSON, ORC & Parquet
本讲义出自Owen O’Malley在Hadoop Summit Tokyo 2016上的演讲,主要分享了Avro, JSON, ORC & Parquet这些文件基本格式的相关内容,介绍了文件格式如何发挥不同的作用以及他们如何才能更好地发挥作用以及这些文件数据格式的各自的优点,还分享了如何使用真实的、多样化的数据集,并介绍了过度依赖类似的数据导致的弱点以及开放和审查基准。
2604 0
js同域名下不同文件下使用coookie
//写cookies function setCookie(name,value) { var Days = 30; var exp = new Date(); exp.
576 0
用WinDbg分析Debug Diagnostic Tool生成的Userdump文件
1、下载WinDbg(Debugging Tools for Windows):http://www.microsoft.com/whdc/devtools/debugging/default.mspx 2、安装WinDbg 3、运行WinDbg 4、配置Symbol文件路径: File>Symbol File Path,输入:SRV*c:\websymbols*http://msdl.
832 0
mysql连接数太小,导致网站报错mysql:Too many connections
mysql连接数太小,导致网站报错mysql:Too many connections
1659 0
用WinDbg分析Debug Diagnostic Tool生成的Userdump文件
1、下载WinDbg(Debugging Tools for Windows):http://www.microsoft.com/whdc/devtools/debugging/default.mspx 2、安装WinDbg 3、运行WinDbg 4、配置Symbol文件路径: File>Symbol File Path,输入:SRV*c:\websymbols*http://msdl.
871 0
VS2010错误报告--No more files!
希望能够帮助一些童鞋,这个错误很难解决, 怎么解决呢,有两种方法: 1:重新装Windows 7 64 Ultimate 和VS2010 64 Ultimate 2:运行报错:.NET Framework 4.
635 0
+关注
3
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载