systemd service 配置 ulimit 限制

发布时间:2026/10/4 19:11:57
systemd service 配置 ulimit 限制 在 bash 中有个 ulimit 命令提供了对 shell 及该 shell 启动的进程的可用资源控制。主要包括打开文件描述符数量、用户的最大进程数量、coredump 文件的大小等。在 CentOS 5/6 等版本中资源限制的配置可以在 /etc/security/limits.conf 设置针对 root/user 等各个用户或者 * 代表所有用户来设置。 当然/etc/security/limits.d/ 中可以配置系统是先加载 limits.conf 然后按照英文字母顺序加载 limits.d 目录下的配置文件后加载配置覆盖之前的配置。 一个配置示例如下soft nofile 100000 * hard nofile 100000 * soft nproc 100000 * hard nproc 100000 * soft core 100000 * hard core 100000不过在 CentOS 7 or 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/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。DefaultLimitCOREinfinity DefaultLimitNOFILE100000 DefaultLimitNPROC100000注意修改了 system.conf 后需要重启系统才会生效。针对单个Service也可以设置以 nginx 为例。编辑两者皆可/usr/lib/systemd/system/nginx.service/usr/lib/systemd/system/nginx.service.d/my-limit.conf[Service] LimitCOREinfinity LimitNOFILE100000 LimitNPROC100000sudo systemctl daemon-reload sudo systemctl restart nginx.service一些常见的配置项和 ulimit 的对应关系Directive ulimit equivalent Unit LimitCPU ulimit -t Seconds LimitFSIZE ulimit -f Bytes LimitDATA ulimit -d Bytes LimitSTACK ulimit -s Bytes LimitCORE ulimit -c Bytes LimitRSS ulimit -m Bytes LimitNOFILE ulimit -n Number of File Descriptors LimitAS ulimit -v Bytes LimitNPROC ulimit -u Number of Processes LimitMEMLOCK ulimit -l Bytes LimitLOCKS ulimit -x Number of Locks LimitSIGPENDING ulimit -i Number of Queued Signals LimitMSGQUEUE ulimit -q Bytes LimitNICE ulimit -e Nice Level LimitRTPRIO ulimit -r Realtime Priority LimitRTTIME No equivalent# /lib/systemd/system/node_exporter.service [Unit] Descriptionnode exporter service [Service] Useraaa Groupaaa Typesimple LimitNOFILEinfinity ExecStart/path/node_exporter --web.listen-address:9002 --collector.supervisord.urlhttp://localhost:9001/RPC2 --collector.supervisord --collector.textfile.directory /path/node_exporter/textfile/ Restarton-success [Install] WantedBymulti-user.target转载信息CentOS7系统中设置systemd service的ulimit限制How to set ulimits on service with systemd?