`
Willam2004
  • 浏览: 86913 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

解决Ubuntu下启动应用抛出too many file (打开文件句柄数的问题)

阅读更多

在Ubuntu下启动java应用时,在控制台输出会抛出打开太多的文错误信息。

 

open too many file

 

应用无法启动,google了下,是因为应用打开的文件句柄数超出了系统的限制。使用命令:

 

ulimit -n

 输出1024

 

解决方案:

 

1.调整Ubuntu下的文件句柄数。

 

查看这篇文章:

 

http://blog.csdn.net/zhaiqi618/article/details/5616998  中的

 

1. #vi /etc/profile,增加ulimit -HSn 65536 将文件句柄数修改到10240,但执行后,使用

source /etc/profile之后,提示:

 

bash: ulimit: open files: 无法修改 limit 值: 不允许的操作
于是查找到这篇:

写道
为啥root用户是可以的?普通用户又会遇到这样的问题? 看一下/etc/security/limits.conf大概就会明白。 linux对用户有默认的ulimit限制,而这个文件可以配置用户的硬配置和软配置,硬配置是个上限。 超出上限的修改就会出“不允许的操作”这样的错误。
 

于是我用root权限修改了/etc/security/limits.conf文件,增加以下内容:

 

 

*               soft     nproc          10240
*               hard    nproc          10240
*               soft     nofile          10240
*               hard    nofile          10240
 

 

*代表domain,影响到的域,我这里设置了全部。
soft/hard :代表软性或者硬性限制
nproc:max number of processes 设置最大的进程数
nofile:max number of open files 设置最大的文件句柄数

再编辑/etc/pam.d/common-session,加入一行,之所以加入这行,是因为需要在下次重启的时候,能够让用户直接修改
 /etc/profile中的文件句柄数生效。http://www.ccs.neu.edu/home/battista/articles/winbind/pam.html  (具体这个文件是做什么用的,我在下次再讨论下。)

session required pam_limits.so
 
再编辑/etc/profile文件,加入刚才的内容:

ulimit -HSn 10240
 此时执行:
   source /etc/profile 仍然会提示:   
bash: ulimit: open files: 无法修改 limit 值: 不允许的操作
  
 这是因为需要重启电脑,否则更改不会立即生效。

检查:
   ulimit -a 这个是列出当前系统的所有内容限制
   ulimit -n 这个是列出当前系统能够打开最大的文件句柄数。

 重启电脑之后,就可以使用root方式进行修改/etc/profile中的ulimit -HSn 后的数字,再执行source /etc/profile,就可以马上看到效果了。

   

 

 

0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics