linux修改open files数
2016-06-06 13:51
435 查看
概要
linux系统默认open files数目为1024, 有时应用程序会报Too many open files的错误,是因为open files 数目不够。这就需要修改ulimit和file-max。特别是提供大量静态文件访问的web服务器,缓存服务器(如squid), 更要注意这个问题。网上的教程,都只是简单说明要如何设置ulimit和file-max, 但这两者之间的关系差别,并没有仔细说明。
说明
1. file-max的含义。man proc,可得到file-max的描述:
/proc/sys/fs/file-maxThis file defines a system-wide limit on the number of open files for all processes. (Seealso setrlimit(2), which can be used by a process to set the per-process limit,RLIMIT_NOFILE, on the number of files it may open.) If you get lots of error messagesabout running out of file handles, try increasing this value:即file-max是设置 系统所有进程一共可以打开的文件数量 。同时一些程序可以通过setrlimit调用,设置每个进程的限制。如果得到大量使用完文件句柄的错误信息,是应该增加这个值。也就是说,这项参数是系统级别的。2. ulimit
Provides control over the resources available to the shell and to processes started by it, on systems that allow such control.即设置当前shell以及由它启动的进程的资源限制。显然,对服务器来说,file-max, ulimit都需要设置,否则就可能出现文件描述符用尽的问题修改:1.修改file-max
# echo 6553560 > /proc/sys/fs/file-max //sysctl -w "fs.file-max=34166",前面2种重启机器后会恢复为默认值 或 # vim /etc/sysctl.conf, 加入以下内容,重启生效 fs.file-max = 6553560
2.修改ulimit的open file,系统默认的ulimit对文件打开数量的限制是1024
# ulimit -HSn 102400 //这只是在当前终端有效,退出之后,open files又变为默认值。当然也可以写到/etc/profile中,因为每次登录终端时,都会自动执行/etc/profile 或 # vim /etc/security/limits.conf //加入以下配置,重启即可生效 * soft nofile 65535 * hard nofile 65535
附录:
附录1.
为了让一个程序的open files数目扩大,可以在启动脚本前面加上ulimit -HSn 102400命令。但当程序是一个daemon时,可能这种方法无效,因为没有终端。
附录2.
如果某项服务已经启动,再动态调整ulimit是无效的,特别是涉及到线上业务就更麻烦了。
这时,可以考虑通过修改/proc/’程序pid’/limits来实现动态修改!!!
来源:http://coolnull.com/2796.html
相关文章推荐
- linux基础(33)--正则表达式--RHEL6.5
- 《Linux内核分析》-----张超
- centos 6.X 安装node
- windows下python连接linux的mysql并且使用
- Linux系统基础网络配置老鸟精华篇
- linux内核学习-建议路线
- CentOS下MySQL 5.7编译安装
- Linux下 *.tar.gz文件解压缩命令
- 使用QEMU调试Linux内核代码
- 每天一个linux命令(17):whereis 命令
- linux内核分析系列--百度
- Linux模式设计系列( 内核与应用关联思考)
- SELinux入门
- 每日一linux命令(9)-------touch
- Linux内核源代码情景分析系列
- linux基本命令(59)——rcp命令
- linux基本命令(58)——telnet命令
- Linux内核学习和研究及嵌入式(ARM)学习和研究的开放文档
- 强悍的 Linux —— GCC 常用命令
- 《Linux内核修炼之道》 系列