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

Systemd CGroups资源限制触发日志的查询及监控方法咨询

Systemd CGroups资源限制触发日志的查询及监控方法咨询

嘿,关于systemd cgroup资源限制触发后的日志查询和监控方法,我整理了几个实用的方向,先结合你提到的默认配置场景回顾下:

默认情况下systemd会通过cgroup来设置资源限制,比如你举例的TaskMax:

$ systemctl status sshd
● sshd.service - OpenSSH Daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: disabled)
Active: active (running) since Fri 2023-08-18 08:24:27 CEST; 37min ago
Main PID: 936 (sshd)
Tasks: 1 (limit: 76994)
(...)

$ systemctl show --property DefaultTasksMax
DefaultTasksMax=76994

你提到的systemd-cgtop确实只能查看当前资源使用率,没法直接显示限制值,下面说下怎么找触发限制的日志和更有效的监控方式:

一、查找资源限制触发的日志

当cgroup的资源限制被触发时,主要有两个地方会记录日志:

  • systemd日志(journalctl):这是最直接的来源,你可以通过关键词过滤找到相关事件:
    • 全局查找cgroup限制相关日志:journalctl --grep="cgroup.*limit\|max tasks reached"
    • 针对特定服务(比如sshd)精准查找:journalctl -u sshd.service --grep="resource limit\|task limit"
  • 内核日志(dmesg):内核层面也会记录cgroup限制触发的事件,比如进程数达到TaskMax时,会输出类似cgroup: fork rejected by pids controller的信息,你可以用这个命令过滤:dmesg | grep -i cgroup

二、更全面的资源限制监控方法

除了systemd-cgtop,还有这些方法能同时查看限制值和当前使用率:

  • 直接查看cgroup的sysfs文件:每个服务的cgroup参数都挂载在/sys/fs/cgroup/目录下,比如查看sshd的进程数限制和当前使用数:
    # 查看TaskMax限制值
    cat /sys/fs/cgroup/pids/system.slice/sshd.service/pids.max
    # 查看当前进程数
    cat /sys/fs/cgroup/pids/system.slice/sshd.service/pids.current
    
  • 用systemctl show查看服务详情:针对特定服务,直接提取限制和当前状态参数:
    systemctl show sshd.service --property=TasksMax,CurrentTasks
    
  • 使用libcgroup的cgtop工具:这个工具和systemd-cgtop不同,它能同时显示cgroup的资源限制和使用率,安装对应的libcgroup包后,直接运行cgtop就能看到更全面的监控数据。

备注:内容来源于stack exchange,提问作者GrabbenD

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 15:49:36