• Ukieweb

    佳的博客

    曾梦想仗剑天涯,后来工作忙没去。

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

image.png

2)yum安装nginx启动

启动方法:systemctl start nginx.service ,然后查看进程号及其limit值,如下:

image.png


到这里问题就来了,为什么通过systemctl启动的nginx对limit的设置不生效 ?????

然后查看了1号进程的limit值( cat /proc/1/limits ),发现也是对修改/etc/security/limits.conf文件里的最大文件打开数和最大进程数没有生效

原因

仔细查看/etc/security/limits.conf文件的注释,说明了对系统服务不生效

image.png

解决办法

在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启动,然后根号进程号查看资源限制,得到

image.png

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
0
下一篇:统计中 同比和环比 什么意思 与 通胀数据 CPI 的实例说明

0 条评论

老佳啊

85后,大专学历,中原人士,家里没矿。

由于年轻时长的比较帅气,导致在别人眼里,我一直不谈恋爱的原因是清高,实则是自己的小自卑。最大的人生目标就是找一个相知相爱相容的人,共度余生。

和人相处时如果能感受到真诚,会非常注重彼此的关系,对别人没有什么心机,即使有利益冲突,一般也会以和为贵,因为在这个世界上,物质的东西,从来不会吸引到我。

特别迷恋那些大山大水,如果现在还能隐居,可能早就去了。对那些宏伟的有底蕴的人文景观比较不感冒。

从事于IT行业,却一直对厨房念念不忘,由于身材魁梧,总觉得自己上辈子是个将军,可惜这辈子没当兵,也不会打架。