本文主要是介绍tomcat启动 java.io.FileNotFoundException Too many open files,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
[quote]tomcat启动 java.io.FileNotFoundException Too many open files2011-03-09 09:29:55| 分类: Tomcat | 标签:limits ulimit conf 文件 pam 字号:大中小 订阅 .昨晚一直未能部署成功,按照下面的方法解决了:
http://qbaok.blog.163.com/blog/static/101292652009216103048305/
早上起来tomcat又挂了 = =|||
老方法查日志,发现报 java.io.FileNotFoundException: Too many open files, 日了难道静发程序没关文件?
继续查,程序没问题……二了……
看看linux的open files得了,敲入ulimit -a
===========================
open files 255
===========================
原来是这里阿.....
立即 ulimit -n 2048
ok。
等等...貌似还要改/etc/security/limits.conf
加入:* - nofile 2048
退出登陆
再ssh进来就效了
ok。
暂时地,适用于通过 ulimit 命令登录 shell 会话期间。
永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件中, 即特定于 shell 的用户资源文件,如:
1)、解除 Linux 系统的最大进程数和最大文件打开数限制:
vi /etc/security/limits.conf
# 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100
说明:* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
2)、让 SSH 接受 Login 程式的登入,方便在 ssh 客户端查看 ulimit -a 资源限制:
a、vi /etc/ssh/sshd_config
把 UserLogin 的值改为 yes,并把 # 注释去掉
b、重启 sshd 服务:
/etc/init.d/sshd restart
3)、修改所有 linux 用户的环境变量文件:
vi /etc/profile
ulimit -u 10000
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
或者直接在/etc/rc.local文件中写下:ulimit -n 4096,但需要将启动的程序也放在此文件中。
=============cut line===========
/etc/security/limits.conf 资料
linux为了适应低性能电脑,所以默认情况下的系统参数比较低,那么我们就需要修改ulimit来提高linux的运行效率。
1、打开/etc/security/limits.conf,在里面填写:
* soft nproc 65536
* hard nproc 65536
* soft nofile 8192
* hard nofile 65535
* - sigpending 65536
也可以填写其他项目,根据具体需要设置,设置后保存-重启,通过命令ulimit -a查看变化。
limits.conf的工作原理:
limits.conf的后端是这样工作的:limits.conf是pam_limits.so的配置文件,然后/etc/pam.d/下的应用程序调 用pam_***.so模块。譬如说,当用户访问服务器,服务程序将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目录下选择一个 对应的服务文件,然后根据服务文件的内容选择具体的PAM模块进行处理。
例:限制admin用户登录到sshd的服务不能超过2个
在/etc/pam.d/sshd 中添加 session required pam_limits.so
在/etc/security/limits.conf中添加 admin - maxlogins 2
查看应用程序能否被PAM支持,用ldd
limits.conf文件的参数
Limits.conf文件的参数可以设置成以下两种形式之一:
暂时地,适用于通过 ulimit 命令登录 shell 会话期间。
永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件之一(例如 ~/.profile),即特定于 shell 的用户资源文件;或者通过编辑 /etc/security/limits.conf.
1.core - 限制内核文件的大小
何谓core文件,当一个程序崩溃时,在进程当前工作目录的core文件中复制了该进程的存储图像。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。 core文件是个二进制文件,需要用相应的工具来分析程序崩溃时的内存映像。
系统默认core文件的大小为0,所以没有创建。可以用ulimit命令查看和修改core文件的大小。
$ulimit -c
0
$ ulimit -c 1000
$ ulimit -c
1000
-c 指定修改core文件的大小,1000指定了core文件大小。也可以对core文件的大小不做限制,如:
# ulimit -c unlimited
#ulimit -c
unlimited
如果想让修改永久生效,则需要修改配置文件,如 .bash_profile、/etc/profile或/etc/security/limits.conf.
2.nofile - 打开文件的最大数目
对于需要做许多套接字连接并使它们处于打开状态的应用程序而言,最好通过使用 ulimit –n,或者通过设置nofile 参数,为用户把文件描述符的数量设置得比默认值高一些[/quote]
[url=http://www.idouye.com/]http://www.idouye.com 爱豆叶资料分享[/url]
这篇关于tomcat启动 java.io.FileNotFoundException Too many open files的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!