首页 > 其他分享 >systemd service 配置 ulimit 限制

systemd service 配置 ulimit 限制

时间:2024-07-25 16:22:48浏览次数:17  
标签:systemd service ulimit system 100000 conf

 

 

在 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。

DefaultLimitCORE=infinity
DefaultLimitNOFILE=100000
DefaultLimitNPROC=100000

注意:修改了 system.conf 后,需要重启系统才会生效。

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

编辑(两者皆可):

  • /usr/lib/systemd/system/nginx.service
  • /usr/lib/systemd/system/nginx.service.d/my-limit.conf
 
[Service]
LimitCORE=infinity
LimitNOFILE=100000
LimitNPROC=100000

vi /lib/systemd/system/

sudo 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

 

infinity 65535
设置打开文件句柄数量
# /lib/systemd/system/node_exporter.service
[Unit]
Description=node exporter service

[Service]
User=aaa
Group=aaa
Type=simple
LimitNOFILE=infinity
ExecStart=/path/node_exporter --web.listen-address=:9002 --collector.supervisord.url="http://localhost:9001/RPC2" --collector.supervisord --collector.textfile.directory /path/node_exporter/textfile/
Restart=on-success

[Install]
WantedBy=multi-user.target

 

 

ystemd中设置LimitNOFILE=infinity最终却得到65536

 

参考:

 

标签:systemd,service,ulimit,system,100000,conf
From: https://www.cnblogs.com/rebrobot/p/18323433

相关文章

  • 在K8S中,api-service 和 kube-schedule 高可用原理是什么?
    在Kubernetes(简称K8s)中,api-service和kube-scheduler的高可用原理是确保这些关键组件在部分节点或实例出现故障时,集群的整体功能和稳定性不受影响。下面分别详细解释这两个组件的高可用原理:1.APIServer高可用原理APIServer作为Kubernetes集群的API网关,负责接收来自用户和其他......
  • 一种WebService的调用方式
    publicstaticvoidsendMesWebService(Stringtel,Stringstr)throwsException{Serviceservice=newService();//new一个服务Callcall=(Call)service.createCall();//创建一个call对象call.setTargetEndpointAddress(endpoint);//......
  • dbms_service 永久有效
    在Oracle数据库中,DBMS_SERVICE包用于管理数据库的服务。服务是Oracle数据库中的一个高级特性,它允许数据库以一种可管理的方式来响应外部程序的请求。如果你想要创建一个服务,该服务在数据库重启后依然保持有效,你需要使用DBMS_SERVICE.CREATE_SERVICE过程,并确保使用STARTUP参数来指......
  • 在K8S中,k8s中service访问有问题,该如何排查?
    在Kubernetes(K8S)中,如果Service访问出现问题,通常可以按照以下步骤进行详细的排查:1.检查Service的状态和配置操作:使用kubectldescribeservice<service-name>命令查看Service的详细描述,确保Service的类型(如ClusterIP,NodePort,LoadBalancer等)和端口映射(如port,targetPort,......
  • 在K8S中,Service的Nodeport端口范围?
    在Kubernetes中,NodePort是一种服务(Service)类型,它允许从集群外部访问服务。当创建一个NodePort类型的服务时,Kubernetes会在每个节点上打开一个静态端口(称为NodePort),所有发往该端口的流量都会被转发到服务后端的Pod。默认情况下,Kubernetes为NodePort服务分配的端口范围是从30000......
  • pymobiledevice3:如果没有抽象方法“_create_service_connection”的实现,则无法实例化
    全面披露:我不知道我在做什么。我没有编程经验。我已要求ChatGPT为我创建一个程序。ChatGPT为我创建的文件之一名为“device_detection.py”。这个特定文件应该检测通过USB端口连接到我的笔记本电脑的智能手机设备,然后在终端中打印结果。如果这就是我所需要的,那就太好了(并且......
  • k8s service-node-port-range ip_local_reserved_ports 记录
    在Kubernetes中,ServiceNodePortRange是一个用于指定NodePort服务端口范围的参数。该参数定义了可以分配给NodePort服务的端口范围。默认情况下,NodePort服务使用的端口范围是30000到32767。如何查看k8sServiceNodePortRangek8smaster节点上的kube-apiserver进程......
  • 在 .NET 下,Fiddler 不再抓取 Web Service 流量问题
    在.NET下,Fiddler不再抓取WebService流量问题问题现象原来的一个应用中,需要访问SOAP服务。在原来的.NETFramework版本中,使用Fiddler是可以抓取到访问这个WebService的SOAP流量的。在迁移到.NET之后,Fiddler就不能再抓取到SOAP流量了。问题分析Fiddler......
  • 封禁 NetBIOS Session Service 和 SMB 服务(特别是旧版本的SMB)可能是出于安全性考虑。
    封禁NetBIOSSessionService和SMB服务(特别是旧版本的SMB)可能是出于安全性考虑。这两种服务在过去的实现中存在一些安全漏洞和风险,特别是在现代网络环境中,这些风险可能会被利用来进行攻击或者未经授权的访问。下面是一些常见的安全考虑:中间人攻击:未加密的NetBIOS和旧版本......
  • Windows BITS(Background Intelligent Transfer Service)是微软开发的一种后台服务,旨在
    后台智能传送服务-Win32apps|MicrosoftLearn关于BITS-Win32apps|MicrosoftLearnWindowsBITS(BackgroundIntelligentTransferService)起源于微软在WindowsXP和WindowsServer2003时期的需求,特别是在联网环境条件不佳或断断续续的情况下,需要一种能够有效管理和优......