centos7 修改 ulimit 值 文件描述符 用户最大进程数量 coredump文件的大小
1. centos 5/6
在centos 5/6 等版本中,资源限制的配置可以在 /etc/security/limits.conf 设置,针对root/user等各个用户或者 * 代表所有用户来设置。 当然,/etc/security/limits.d/ 中可以配置,系统是先加载limits.conf然后按照英文字母顺序加载limits.d目录下的配置文件,后加载配置覆盖之前的配置。
一个配置示例如下:
* soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535 * soft core 65535 * hard core 65535
说明
* 代表针对所有用户
noproc 代表最大进程数
nofile 代表最大文件打开数
重启系统生效。
验证:
[vagrant@tmp1 ~]$ ulimit -a core file size (blocks, -c) 65535 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 1893 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 65535 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 65535 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
2. CentOS 7
按照centos6的方法设定后,看起来一切正常,可是这里有个大坑。接着往下看。
为了对比现象,需要安装两个nginx,一个源码安装,一个yum安装
现象
1)先启动源码编译的nginx,并查看进程号及limit值
查看进程: ps -ef |grep nginx 查看某个进程的limit值: cat /proc/进程号/limits
2)yum安装nginx启动
启动方法:systemctl start nginx.service ,然后查看进程号及其limit值,如下:
到这里问题就来了,为什么通过systemctl启动的nginx对limit的设置不生效 ?????
然后查看了1号进程的limit值( cat /proc/1/limits ),发现也是对修改/etc/security/limits.conf文件里的最大文件打开数和最大进程数没有生效
原因
仔细查看/etc/security/limits.conf文件的注释,说明了对系统服务不生效
解决办法
在Centos7系统中,使用Systemd替代了之前的SysV。/etc/security/limits.conf文件的配置作用域缩小了。
/etc/security/limits.conf的配置,只适用于通过PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。因此登录用户的限制,通过/etc/security/limits.conf与/etc/security/limits.d下的文件设置即可。
对于systemd service的资源设置,则需修改全局配置,全局配置文件放在/etc/systemd/system.conf和/etc/systemd/user.conf
同时也会加载两个对应目录中的所有.conf文件/etc/systemd/system.conf.d/.conf和/etc/systemd/user.conf.d/.conf。system.conf是系统实例使用的,user.conf是用户实例使用的。
vim /etc/systemd/system.conf DefaultLimitNOFILE=100000 DefaultLimitNPROC=65535
重启系统后生效
重启后 systemctl start nginx启动,然后根号进程号查看资源限制,得到
3. 用到的相关命令
1)查看当前进程的最大可以打开的文件数
cat /proc/进程ID/limits
2)查看当前进程实时打开的文件数
lsof -p PID |wc -l
3)查看系统总限制打开文件的最大数量
cat /proc/sys/fs/file-max
注:若设置不生效,查看包含的目录下的配置文件是否覆盖,如/etc/security/limits.d/下的文件是否覆盖了/etc/security/limits.conf设置的值
4. ulimit 命令临时调整介绍
查看 限制数
ulimit -a # 用来显示当前的各种用户进程限制 ulimit -n # 命令可以查看Linux系统里打开文件描述符的最大值,一般缺省值是1024 ulimit -u # 系统限制其最大进程数
临时调整文件描述符
ulimit -n 65535 # 将每个进程可以打开的文件数增加到65535 ulimit -n xx 可以修改每个进程可打开的文件数,缺省值是1024。
临时调整最大进程数
ulimit -u 65535 # 把当前用户的最大进程数设置为 65535 unlimit -u xx 修改各linux用户的最大进程数。 Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况设置各linux用户的最大进程数。
其他设置:下面配置项建议设置为无限制
数据段长度:ulimit -d unlimited 最大内存大小:ulimit -m unlimited 堆栈大小:ulimit -s unlimited CPU 时间:ulimit -t unlimited 虚拟内存:ulimit -v unlimited
上面通过 ulimit 命令设置的项只能在当前登录shell的会话期间有效。
共 0 条评论