设置ulimit值(Linux文件句柄数量)永久生效
limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,而且只针对于单个会话。
格式如下:
username|@groupname type resource limit
username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。
type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比har 限制高。用 – 就表明同时设置了 soft 和 hard 的值
resource:
core - 限制内核文件的大小 date - 最大数据大小 fsize - 最大文件大小 memlock - 最大锁定内存地址空间 nofile - 打开文件的最大数目 rss - 最大持久设置大小 stack - 最大栈大小 cpu - 以分钟为单位的最多 CPU 时间 noproc - 进程的最大数目 as - 地址空间限制 maxlogins - 此用户允许登录的最大数目
inux 默认打开文件数linux 默认打开文件数为1024个,通过ulimit -a 可以查看open files
修改这个限制可以使用ulimt -SHn 65536
永久生效需要进行下面设置:
1./etc/pam.d/login
添加pam_limits.so
(有时候系统默认添加)
首先要通过find / -name pam_limits.so
查找文件的具体的位置
session required /lib/security/pam_limits.so
2./etc/security/limits.conf
添加
www - nofile 1006154 www 是一个用户,如果是想所有用户生效的话换成 * ,设置的数值与硬件配置有关,别设置太大了。 * soft nofile 65536 * hard nofile 65536
3.修改 /etc/rc.local 添加
echo 8061540 > /proc/sys/fs/file-max
(此处的数据按照您实际需要调节)
此法解决的实际问题是:在高负载下squid,mysql 会发生 打开的文件数超过系统的进程限制,造成系统瓶颈。
ulimit 的作用
======================= ulimit:显示(或设置)用户可以使用的资源的限制(limit),这限制分为软限制(当前限制)和硬限制(上限),其中硬限制是软限制的上限值,应用程序在运行过程中使用的系统资源不超过相应的软限制,任何的超越都导致进程的终止。 参数 描述 ulimited 不限制用户可以使用的资源,但本设置对可打开的最大文件数(max open files) 和可同时运行的最大进程数(max user processes)无效 -a 列出所有当前资源极限 -c 设置core文件的最大值.单位:blocks -d 设置一个进程的数据段的最大值.单位:kbytes -f Shell 创建文件的文件大小的最大值,单位:blocks -h 指定设置某个给定资源的硬极限。如果用户拥有 root 用户权限,可以增大硬极限。任何用户均可减少硬极限 -l 可以锁住的物理内存的最大值 -m 可以使用的常驻内存的最大值,单位:kbytes -n 每个进程可以同时打开的最大文件数 -p 设置管道的最大值,单位为block,1block=512bytes -s 指定堆栈的最大值:单位:kbytes -S 指定为给定的资源设置软极限。软极限可增大到硬极限的值。如果 -H 和 -S 标志均未指定,极限适用于以上二者 -t 指定每个进程所使用的秒数,单位:seconds -u 可以运行的最大并发进程数 -v Shell可使用的最大的虚拟内存,单位:kbytes