刚开始远程工作,就接到短信告警,系统CPU占用过高,立即登录系统查看,登录的过程异常缓慢,不过总算登录了

ABRT报告发现了一个问题

ABRT是一个自动汇报错误的工具,主要是为用户提供简洁的,全面的错误信息

对于系统用户来说,它主要从系统日志中查询可以的字符串,比如oops、Machine-check、Xorg故障等,除了在系统日志中查询匹配外,它还检查kdump等记录故障的文件,从中提取系统错误信息,它提供了abrt-cli命令进行报告查看

通过提示命令查看

发现是systemd-logind的问题,结合top查看

systemd-logind占用CPU100%,导致系统负载飙升

systemd-logind是什么呢?

systemd-logind 是一个管理用户登录的系统服务。其职责如下:

  • 持续跟踪用户的会话、进程、空闲状态。这将在 user.slice 之下,为每个用户分配一个 slice 单元、为每个用户的当前会话分配一个 scope 单元。同时,针对每个已登录的用户,将会启动一个专属的服务管理器(作为 user@.service 模版的一个实例)。
  • 生成并管理"session ID"。如果启用了审计并且已经为一个会话设置了审计"session ID", 那么该ID也将同时被用作"session ID", 否则将会使用一个独立的会话计数器(也就是独立生成一个"session ID")。
  • 为用户的特权操作(例如关闭或休眠系统) 提供基于 polkit 的认证与授权
  • 为应用程序实现 阻止关闭/休眠系统的逻辑
  • 处理 硬件关机/休眠按钮的动作
  • 多席位(Multi-Seat)管理
  • 会话切换管理
  • 管理 用户对设备的访问
  • 在启动虚拟终端时 自动启动文本登录程序(agetty), 并管理用户的运行时目录

那么为什么登录慢,登录后又提示systemd-logind被killd,通过查找message看到如下

很明显是系统的buffer不够,在读取/run/systemd/users/0时无法读取,无法为登录用户创建session,然后3分钟无响应被wachdog检测到kill掉,重新启动重新尝试

可以在图中看到,仍然有root用户分配了session,我想这是因为这个时候正好资源有释放,刚好可以申请到资源创建session

为了解决疑惑,通过strace看一下systemd-logind在用户登录时的调用

首先查看下systemd-logind的pid

接着通过strace -p进行跟踪调用

发现登录过程中,就是调用/run/systemd/users下面的文件

我们看下/run/systemd/users/0文件中存储的内容

记录了用户id为0也就是root用户的session信息,这里发现活动的session很多,但是我登录用户只登录了一个会话

因为每一个session都会创建一个slice,通过slice查看,先查看系统slice

然后查看user.0.silce

发现除了用户登录,还有大量的crond定时任务的session,可以看到每个session下面的详细命令或脚本

systemd-logind有个bug,就是当有crond时,往往session回收不及时,这也是资源占用导致无法新开session的原因

从上的图中可以看到user.0.slice中是通过cgroup来进行管理的,用户的进程的资源管理可以在/run/systemd/system/目录下,根据用户的slice或者是session去进行配置

比如user.0.slice.d下面的配置

至此问题大致了解,systemd-logind在用户登录时申请资源,由于系统资源不够,导致无法创建session,无法登录。

网上有建议让关掉systemd-logind,我个人建议不关掉,因为它有一个比较重要的功能就是更方便系统通过cgroup来管理用户资源

更好的做法是,定时释放资源,将定时任务尽量写到不同的用户中,而不是都写入到root用户下

通常管理员都是将定时任务写入到root下,这种方式不管是执行产生的临时文件还是日志文件,都是root权限的,比如执行web的命令生产root权限的文件,会导致原本的web用户无法调用而报错,所以尽量通过crontab -e -u web用户的方式,减少root用户下的定时任务

linux systemd-logind 进程cpu占用100% 解决方法相关推荐

  1. linux snap 进程cpu占用100% 解决

    过程如下: df -iayll@yll-ubuntu:/snap/snapd$ df -ia 文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点 sysfs 0 0 0 - /sys ...

  2. Linux磁盘占用100%解决方法

    Linux磁盘占用100%解决方法 参考文章: (1)Linux磁盘占用100%解决方法 (2)https://www.cnblogs.com/gaf617/p/4755577.html 备忘一下.

  3. Win10磁盘占用100%解决方法

    Win10磁盘占用100%解决方法 1.按住Ctrl+Shift+ESC打开任务管理器,点击任意进程,右键-资源值-磁盘-百分比,如果是一般应用进程,可以直接关掉. 2.切换到"性能&quo ...

  4. Windows下PHPStudy服务环境80端口被进程System占用的解决方法

    经常在测试源码的时候本地使用的PHPStudy提示80端口被占用,然而尝试释放端口时会提示是System进程,无法释放.前几次都是重启解决问题,今天闲着无聊,尝试着解决一下~~ 看到80端口被PID为 ...

  5. linux ubuntu systemd-udevd进程 cpu占用过高 解决方法

    ubuntu 18.04 systemd-udevd进程CPU占用特别高,禁用WiFi可以解决,如下: 执行 udevadm monitor ,不断输出如下信息: UDEV [13756.376116 ...

  6. 阿里云kubernetes遭入侵pubg进程占用cpu资源100%解决方法

    发现服务器CPU占用100%,通过top命令发现pubg -c config.json -t 2占用CPU资源,kill进程会自动启动.黑客入侵方式是kubernetes创建pod. Name: ku ...

  7. 织梦mysql占用资源_解决一个 MySQL 服务器进程 CPU 占用 100%的技术笔记

    早上帮朋友一台服务器解决了Mysql cpu 占用 100%的问题.稍整理了一下: 朋友主机(Windows 2003 + IIS + PHP + MYSQL )近来 MySQL 服务进程 (mysq ...

  8. php mysql cpu100_MySQL服务器进程CPU占用100%的解决方法

    早上帮朋友一台服务器解决了 Mysql cpu 占用 100% 的问题.稍整理了一下,将经验记录在这篇文章里. 朋友主机(Windows 2003 + IIS + PHP + MYSQL )近来 My ...

  9. centos中bash占用cpu_Linux CentOS 进程CPU占用100%木马查杀过程

    在安装CentOS-6.9-x86_64-minimal.iso之后因为设置用户密码比较简单,并且没有修改默认的22远程端口,导致短时间被扫描入侵,然后服务器疯狂向外发包,因此被自己搞死过好几次别人的 ...

最新文章

  1. 课堂练习----二维数组
  2. 几种常用的医院地图API接口地址—百度地图
  3. php打开目录文件类型,php中打开目录并输出目录文件实现代码
  4. 深度学习之生成对抗网络(6)GAN训练难题
  5. Java知识系统回顾整理01基础05控制流程07结束外部循环
  6. vue/return-in-computed-property Enforce that a return statement is present in computed property
  7. textlayout Java_Java TextLayout.getBounds方法代码示例
  8. Spring+SpringMVC+MyBatis深入学习及搭建(九)——MyBatis和Spring整合
  9. eclipse关闭js校验
  10. 设置对话框大小和位置
  11. html调后台接口_接口测试平台代码实现62: 多接口用例2
  12. Bailian2765 POJ NOI0113-03 八进制小数【进制】
  13. 动态规划---01背包问题(2种方法)
  14. Cesium 计算一个点正北方向x米的另一个点的坐标
  15. 读掘金小册组件精讲总结2
  16. 多线程相关知识点详解
  17. 在夕阳再晨的日子里(二)----掌管市场部的岁月之合作团队与社区的拓展
  18. vcf格式文件转化为Excel(csv)格式文件(R语言的write.csv,write.table功能,Excel表的文件导入功能)...
  19. error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.
  20. 知识社会的到来:知识管理与知识协同

热门文章

  1. html css integrity,integrity 属性
  2. Tungsten Fabric SDN — 与 OpenStack 的集成部署
  3. Linux Kernel TCP/IP Stack — L1 Layer — Physical NIC
  4. NFV — Overview
  5. 动态阈值--大津法理解
  6. 电压控制型开关电源的基本电路
  7. Web安全学习笔记——SQL注入
  8. 微信小程序教学第三章第四节(含视频):小程序中级实战教程:下拉更新、分享、阅读标识...
  9. testng xml 示例
  10. Python多版本共存之pyenv