Too many open files问题解决

项目运行过程出现如下问题

经查询,找出原因,并进行解决

具体原因如下:

too many open files(打开的文件过多)是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,

也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。

引起的原因就是进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数,通过命令ulimit -a可以查看当前系统设置的最大句柄数是多少:

open files那一行就代表系统目前允许单个进程打开的最大句柄数,这里是1024。

使用命令lsof -p 进程id可以查看单个进程所有打开的文件详情,使用命令lsof -p 进程id | wc -l可以统计进程打开了多少文件: 

扫描二维码关注公众号,回复: 425152 查看本文章

以裸启动的tomcat为例,可以看到它目前打开了108个文件数,如果文件数过多使用lsof -p 进程id命令无法完全查看的话,可以使用lsof -p 进程id > openfiles.log将执行结果内容输出到日志文件中查看。

解决方法如下:

1、增大允许打开的文件数——命令方式

ulimit -n 2048

这样就可以把当前用户的最大允许打开文件数量设置为2048了,但这种设置方法在重启后会还原为默认值。 

ulimit -n命令非root用户只能设置到4096。 

2、增大允许打开的文件数——修改系统配置文件

vim /etc/security/limits.conf

加入

* - nofile 8192

来源:

https://blog.csdn.net/roy_70/article/details/78423880

猜你喜欢

转载自www.cnblogs.com/java-spring/p/9019282.html