mysql lsof打开数过多_打开文件错误太多,但lsof显示合法数量的打开文件

博主遇到Java程序因文件数量超过限制(500k)崩溃问题,分析了/etc/security/limits.conf设置、系统资源使用情况(lsof)和upstart脚本。文章将探讨如何解决Ubuntu 11.04服务器上Java进程文件限制问题。

我的Java程序失败了

Caused by: java.io.IOException: Too many open files

at java.io.UnixFileSystem.createFileExclusively(Native Method)

at java.io.File.createNewFile(File.java:883)...

这是来自的关键行/etc/security/limits.conf。他们将用户的最大文件数设置为500k:

root soft nofile 500000

root hard nofile 500000

* soft nofile 500000

* hard nofile 500000

我跑去lsof统计打开的文件数-

包括全局和jvm进程。我检查了中的柜台/proc/sys/fs。一切似乎还可以。我的进程仅打开了4301个文件,限制为500k:

:~# lsof | wc -l

5526

:~# lsof -uusername | wc -l

4301

:~# cat /proc/sys/fs/file-max

744363

:~# cat /proc/sys/fs/file-max

744363

:~# cat /proc/sys/fs/file-nr

4736 0 744363

这是Ubuntu 11.04服务器。我什至已经重新启动,所以我很肯定正在使用这些参数。

我不知道它是否相关,但是该过程由upstart脚本启动,该脚本使用setuidgid启动该过程,如下所示:

exec setuidgid username java $JAVA_OPTS -jar myprogram.jar

我缺少什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值