You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法为systemd临时scope设置文件描述符限制,该如何解决?

为systemd临时scope单元调整文件描述符限制的解决方案

问题背景

尝试为Azure依赖代理的临时scope单元 enable_e0d20b64-6e48-4e38-a718-6ae53745eddb.scope 提升打开文件描述符限制(LimitNOFILE),但通过修改父slice单元 azure.slice 的方式失败——systemd提示slice单元不支持LimitNOFILE指令,添加[Service]段也被忽略。

单元层级结构:

├─azure.slice
│ ├─waagent.service
│ │ ├─18305 /usr/bin/python -u /usr/sbin/waagent -daemon
│ │ ├─27946 python -u bin/WALinuxAgent-2.9.0.4-py2.7.egg -run-exthandlers
│ │ ├─28127 /bin/bash /var/lib/waagent/Microsoft.ManagedServices.ApplicationHealthLinux-1.0.5/bin/applicationhealth-shim enable
│ │ ├─28129 tee -ia /var/log/azure/applicationhealth-extension/handler.log
│ │ └─28144 /var/lib/waagent/Microsoft.ManagedServices.ApplicationHealthLinux-1.0.5/bin/applicationhealth-extension enable
│ └─azure-vmextensions.slice
│   └─azure-vmextensions-Microsoft.Azure.Monitoring.DependencyAgent.DependencyAgentLinux_9.10.13.19190.slice
│     └─enable_e0d20b64-6e48-4e38-a718-6ae53745eddb.scope
│       ├─18431 /bin/sh /opt/microsoft/dependency-agent/bin/microsoft-dependency-agent-manager
│       └─18515 /opt/microsoft/dependency-agent/bin/microsoft-dependency-agent

失败原因

systemd的slice单元属于资源分组容器,仅支持CPU、内存等全局资源限制(参考systemd.resource-control),而LimitNOFILE这类进程级ulimit限制,属于service/scope等进程执行单元的配置项,slice本身无法直接设置。

解决方案

方案1:直接修改目标scope的临时配置

临时scope虽为动态生成,但可通过systemd的drop-in目录添加持久化配置:

  1. 创建scope的drop-in目录:
    mkdir -p /etc/systemd/system/enable_e0d20b64-6e48-4e38-a718-6ae53745eddb.scope.d
    
  2. 创建配置文件override.conf:
    [Scope]
    LimitNOFILE=4096
    
  3. 重载systemd并重启scope:
    systemctl daemon-reload
    systemctl restart enable_e0d20b64-6e48-4e38-a718-6ae53745eddb.scope
    

注意:临时scope名称可能随代理更新变化,此方法仅适用于当前实例。

方案2:从父service层面配置(持久化)

该scope由Azure依赖代理的manager进程启动,可修改父service的配置,让子scope继承限制:

  1. 查找对应service单元:
    systemctl list-units | grep DependencyAgent
    
  2. 编辑service的drop-in配置:
    systemctl edit azure-vmextensions-Microsoft.Azure.Monitoring.DependencyAgent.DependencyAgentLinux_9.10.13.19190.service
    
  3. 在编辑器中添加:
    [Service]
    LimitNOFILE=4096
    
  4. 重启service:
    systemctl restart azure-vmextensions-Microsoft.Azure.Monitoring.DependencyAgent.DependencyAgentLinux_9.10.13.19190.service
    

验证配置生效

  1. 查看进程实际限制:
    cat /proc/18431/limits | grep "Max open files"
    cat /proc/18515/limits | grep "Max open files"
    
  2. 查看scope的systemd配置:
    systemctl show enable_e0d20b64-6e48-4e38-a718-6ae53745eddb.scope | grep LimitNOFILE
    

内容的提问来源于stack exchange,提问作者victorbrca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 20:45:25