CentOS 7 systemd的坑
一、概述
在从 CentOS 6 迁移到 CentOS 7 的过程中,可能有一些地方需要调整,最显著的地方莫过于 systemd 带来的改变,不同的管理服务的方式,不同的日志方式,设置时区,时间等等。 当然,除了这些显而易见的改变之外,有些变化并不是那么引人注目,例如这里要介绍的你可能发现曾经配置了正确的 /etc/security/limits.conf 在 CentOS 7 中却没有生效了。
如果遇到上面的问题,很可能已经导致了你的应用异常了,例如:以前配置了服务的 nproc
为一个非常大的数值, 结果现在发现服务不能打开更多的文件。
惊讶之余,查看服务的 /proc/<pid>/limits
却发现:
Max open files files
那么,为什么服务使用 systemd 启动就没有生效呢?
根据 redhat bugzilla 754285, systemd 实际上是会忽略 /etc/security/limits.conf
,下面是 systemd 2 号人物的回答:
而这个 bug 也标记为已解决,在 pam 包中解决,这个包包含了 /etc/security/limits.conf
, 在这个文件中加入了如下注释:
# /etc/security/limits.conf
#
#This file sets the resource limits for the users logged in via PAM.
#It does not affect resource limits of the system services.
#
注意,这里的 system services 指的是 system wide service,对于 CentOS 7 来说也就是系统的 service。
systemd 还可以对普通用户启动,使用 --user
参数。
二、解决之道
在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/*.conf 和 /etc/systemd/user.conf.d/*.conf
其中,system.conf 是系统实例使用的,user.conf用户实例使用的。一般的sevice,使用system.conf中的配置即可。systemd.conf.d/*.conf中配置会覆盖system.conf。
DefaultLimitCORE=infinity
DefaultLimitNOFILE=
DefaultLimitNPROC=
然后运行如下命令,才能生效。
sudo systemctl daemon-reload
sudo systemctl restart nginx.service
查看一个进程的limit设置:cat /proc/YOUR-PID/limits
例如我的一个nginx service的配置效果:
$cat /proc/$(cat /var/run/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 unlimited bytes
Max core file size unlimited unlimited bytes
Max resident set unlimited unlimited bytes
Max processes processes
Max open files files
Max locked memory bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals signals
Max msgqueue size bytes
Max nice priority
Max realtime priority
Max realtime timeout unlimited unlimited us
顺便提一下,我还被CentOS7自带的/etc/security/limits.d/20-nproc.conf文件坑过,里面默认设置了非root用户的最大进程数为4096,难怪我上次在limits.conf中设置了没啥效果,原来被limit.d目录中的配置覆盖了。
CentOS 7 systemd的坑的更多相关文章
- asp.net core 发布centos 7 遇到的坑
只是简单记录 .net core 在linux 的安装部署步骤,大神可以忽略 虚拟机:VMware Workstation Pro Linux 版本:http://mirrors.aliyun.com ...
- centos部署yapi爬坑记
前言 这几天终于完成了为期三个月的公司某个demo版的项目,在这期间和公司的后台因为API的事怼过无数次了,'我的接口没问题,是你请求的方式不对吧!'.'一定是你请求的参数不对'......诸如此类问 ...
- CentOS 7 systemd添加自定义系统服务
systemd: CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,即:/usr/lib/systemd/syste ...
- 安装CentOS 7 遇到的坑
1,U盘安装 1.1 用最新版UltraISO刻录到U盘 坑1,如果之前不是用UltraISO刻录,或者不是最新版,u盘的label就不是系统自带的,当你选择install centos 7然后ta ...
- Docker创建Centos踩出来的坑
屁话不多说,先来一遍正常的流程 1.下载centos镜像 # docker pull centos 2.运行容器,修改镜像 2.1 运行 # docker run -itd --name centos ...
- CentOS安装时小坑记录
在安装CentOS的时候,由于第一次安装小白,将VM虚拟机的内存设置为512M,导致进行安装的时候无法进入正常的画面安装模式,只能使用简版安装界面,可能对于很多小白不是很熟悉,特此记录,安装CentO ...
- CentOS 7 systemd service开机启动设定
#vi /etc/systemd/system/xxx.service [Unit] Description=startup script test [Service] Type=simple Exe ...
- 【Centos】systemd入门教程
systemd使用教程 常用指令 运行一个服务: systemctl start <服务名> 关闭一个服务: systemctl stop <服务名> 重启一个服务: syst ...
- django项目部署到centos,踩的坑
FAQ1:在使用pip3安装库的时候,提示需要升级pip pip3 install --upgrade pip FAQ2:在创建软链接时,提示:ln: failed to create symboli ...
随机推荐
- redis信息相关集群
转: http://www.runoob.com/redis/redis-install.html //redis的安装与运维相关 http://zhou123.blog.51cto.com/4355 ...
- 转: xshell远程连接自动断开的问题解决办法
转:http://blog.csdn.net/haijiaoqihao20160106/article/details/50623431 2.客户端的配置 Keep Alive修改.我的xshell的 ...
- 【矩阵乘】【DP】【codevs 1305】Freda的道路
1305 Freda的道路 时间限制: 1 s 空间限制: 128000 KB 题目等级: 大师 Master 题目描写叙述 Description Freda要到Rainbow的城堡去玩了. 我们能 ...
- Dijkstra和Floyd_warshall
import java.util.Arrays; import java.util.Scanner; /*题目描写叙述: 有n个城市.城市间有m条道路.每条道路都有长度d.给你起点城市s终点终点t.要 ...
- 快讯:微软安卓版个人助理(Cortana)在美国境内进行公測
8月24日,"Microsoft starts public test of Cortana app for Android smartphones"(此文8月24日发表),此事意 ...
- 史上最全面的Buffalo WHR-G300N CH v2 刷OpenWrt教程
Buffalo WHR-G300N CH v2 刷OpenWrt.有两种办法.一种是Windows下刷.一种是在linux下使用tftp刷.Buffalo WHR-G300N-CH v2的openwr ...
- 老周发布 UWP 应用的隐私策略(通用)
UWP 应用隐私策略 前注 本声明通用于老周所发布的所有 UWP 应用,下文简称“应用”.开发者全称:周家安,下文简称“老周”. 1.免责声明 您在使用应用过程中,请遵守<中华人民共和国宪法& ...
- poj2689 Prime Distance 有难度 埃拉托斯尼斯筛法的运用
我承认这道很难(对我来说),搞脑子啊,搞了好久,数论刚开始没多久,还不是很强大,思路有点死,主要是我 天赋太差,太菜了,希望多做做有所改善 开始解析: 首先要将在 [ l,u]内的所有素数找出来,还好 ...
- 一个简单的C/S事例——JAVA-Socket
TalkClient.java import java.io.*; import java.net.*; public class TalkClient { public static void ma ...
- Bootstrap定制开发
Bootstrap作为目前很受欢迎的前端框架,越来越多的网站开始使用基于Bootstrap框架进行开发. 1.定制开发方法 (1)Bootstrap定制开发可以使用LESS和Grunt实现定制化 (2 ...