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"
- 全局查找cgroup限制相关日志:
- 内核日志(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
相关产品推荐
相关产品推荐

