同一个请求,用域名请求偶尔会报500错,但是用ip地址加端口请求不会报错,最后找原因是日志报错:too many open files

发布于:2022-12-17 ⋅ 阅读:(610) ⋅ 点赞:(0)

前端页面错误截图:

进行tomcat实时日志查看:报错: too many open files

原因:当用linux做高并发服务器时,会遇到"Too many open files"的错误。

Linux是有文件句柄限制的(open files),而且Linux默认不是很高,一般都是1024,做高并发生产服务器用其实很容易就达到这个数量。

在linux中执行ulimit -a 即可查询linux相关的参数,如下所示:

ulimit -a

用ulimit命令是可以修改这些配置的
命令的格式:ulimit [-SHacdefilmnpqrstuvx] [limit]

中间的参数对应这要修改的项目。
默认最大打开文件数(open files)最大数为1024,修改:

ulimit -n 102400

最大值为655350

修改后,重启就没有再报错偶尔报错500,已解决。

但是后面过了一段时间,又出现怎个问题。然后发现ulimit -n 102400 ,这个只是临时更改,没有效。

永久更改最大打开文件数(open files)最大数,方法:

1、对Linux系统的配置文件,的limits.conf中加入:

* soft nofile 65535        #修改最大文件
* hard nofile 65535        #修改最大文件,更改的大小其实是上图中的,open files中的,把1024更改为65535

* soft nproc 65535         #修改进程数
* hard nproc 65535        #修改进程数      更改的是上图中的,max user memor中的,把254337更改为65535(根据自己的需求来判断是否要更改进程数)

 

本文参考解决:too many open files 解决办法文章

连接:https://blog.csdn.net/zhuwinmin/article/details/72730288