too many open files

it2024-11-05  6

错误如下图:

错误已经说得很清楚了,打开了太多的文件,通过ulimit -a查看linux的默认最大文件句柄为:1024。

我们可以在/etc/security/limits.conf  修改配置该值,但是这种方法治标不治本。

我们使用lsof -p 60071(其中60071为出错进程的进程号)查看进程都有哪些打开的文件句柄,发现有大量如下句柄,这是上传文件时,undertow在tmp中生成的临时目录。

引起此问题的代码如下:

通过查看代码,没有看到InputStream关闭的地方(在putObject里也没有)。初步判断问题出这这里。修改代码如下,测试OK:

总结:原则:最好在任何时候使用InputStream或者OutputStream的时候,在finally中调用close()方法,显式关闭。

最新回复(0)