centos7下以service配置文件启动的服务ULIMIT资源受谁限制?

在bash中,有个ulimit命令,提供了对shell及该shell启动的进程的可用资源控制。主要包括打开文档描述符数量、用户的最大进程数量、coredump文档的大小等。

在centos 5/6 等版本中,资源限制的配置可以在 /etc/security/limits.conf 设置,针对root/user等各个用户或者*代表所有用户来设置。

当然,/etc/security/limits.d/ 中也可以配置,系统是先加载limits.conf然后按照英文字母顺序加载limits.d目录下的配置文档,

后加载配置覆盖之前的配置。

在centos7中/etc/security/limits.d/20-nproc.conf配置文件中默认设置了非root用户的最大进程数为4096,会覆盖/etc/security/limits.conf文件中的配置。

一个配置示例如下:

* soft core 100000
* hard core 100000
* soft nofile 100000
* hard nofile 100000
* soft nproc 100000
* hard nproc 100000

格式如下:
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 - 此用户允许登录的最大数目

在CentOS 7 / RHEL 7的系统中,使用Systemd替代了之前的SysV

因此 /etc/security/limits.conf 文档的配置作用域缩小了。limits.conf这里的配置,只适用于通过PAM认证登录用户的资源限制,

它对systemd的service的资源限制不生效

登录用户的限制,与上面讲的一样,通过 /etc/security/limits.conf 和 limits.d 来配置即可。

对于systemd service的资源限制,是受谁限制呢?

全局的配置:放在文档 /etc/systemd/system.conf 和 /etc/systemd/user.conf。

与此同时,也会加载下面两个对应的目录中的所有.conf文档
/etc/systemd/system.conf.d/
/etc/systemd/user.conf.d/

system.conf 是系统实例使用的
user.conf用户实例使用的
一般的sevice,使用system.conf中的配置即可,在[Service]模块下添加如下内容。
systemd.conf.d/*.conf中配置会覆盖system.conf的配置。

#生产环境一般处于禁用状态
#DefaultLimitCORE=infinity         
#核心转储文件大小不限制,它是进程运行时突然崩溃的那一刻的内存快照。操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行堆栈等信息转储保存在一个文件里,可使用 gdb 工具来分析。core dump 生产环境一般处于禁用状态,对于内存消耗性的进程,core dump 时会占用很多系统资源,磁盘空间也可能被写满。
DefaultLimitNOFILE=1048576
#服务进程可以打开文件的最大数目为1048576
DefaultLimitNPROC=65535
#进程可以打开的最大线程数目为65535

# cat /etc/systemd/system.conf | grep -v '^#' | grep -v '^$'
[Manager]
DefaultLimitCORE=infinity
DefaultLimitNOFILE=1048576
DefaultLimitNPROC=65535

# cat /etc/systemd/user.conf | grep -v '^#' | grep -v '^$'
[Manager]
DefaultLimitCORE=infinity
DefaultLimitNOFILE=1048576
DefaultLimitNPROC=65535

注:修改了system.conf后,需要重启系统才会生效。
测试中发现执行以下命令也可以让 systemd 加载最新配置,不过官方文档说明该命令很少用,主要在 debugging 和 package upgrades 时使用。

 systemctl daemon-reexec

之前启动的service服务也不会自动加载新的限制参数 ,需要重启对应的service服务才会变更限制。

daemon-reload重新加载的是所有单元文件,而不是systemd本身的配置。

daemon-reexec

Reexecute the systemd manager. This will serialize the manager state, reexecute the process and deserialize the state again. This command is of little use except for debugging and package upgrades. Sometimes, it might be helpful as a heavy-weight daemon-reload. While the daemon is being reexecuted, all sockets systemd listening on behalf of user configuration will stay accessible.

除了 LimitCORE,还可以在 service 文件中配置 LimitNOFILE、LimitSTACK、LimitNPROC 等资源限制,配置时请注意单位,详见:

https://www.freedesktop.org/software/systemd/man/systemd.exec.htmlsystemd.execsystemd.exec

针对单个Service,也可以设置,以nginx为例。

编辑 /usr/lib/systemd/system/nginx.service 文档在[Service]模块下添加如下内容:

[Service]
LimitCORE=infinity
LimitNOFILE=1048576
LimitNPROC=65535

然后运行如下命令,才能生效。

systemctl daemon-reload

systemctl restart nginx.service

查看一个进程的limit设置:cat /proc/YOUR-PID/limits

例如我的一个nginx service的配置效果:

$ cat /proc/$(cat /usr/local/nginx/logs/nginx.pid)/limits
 
Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        unlimited            unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             65535               65535               processes
Max open files            1048576               1048576               files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       1030606              1030606              signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

cat /proc/$(ps -ef | grep XXX.jar | grep -v grep | awk '{print $2}')/limits
cat /proc/$(ps -ef | grep jenkins.war | grep -v grep | awk '{print $2}')/limits

参考文献 systemd service 如何开启 core dump
https://zhuanlan.zhihu.com/p/41153588
https://www.wenjiangs.com/doc/systemd-systemd-system-conf#f0f093f535dca6ab3fc14deae410700b

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容