解决Ubuntu 22.04频繁杀死应用的问题:关闭systemd-oomd守护进程

解决Ubuntu 22.04频繁杀死应用的问题

以下为关闭命令:
在这里插入图片描述

Ubuntu 22.04 LTS 版本带来一项新功能:默认启用 systemd-oomd 作为内存不足时的守护进程,它可以在内存高压的情况下干掉一部分进程。

然而,该 OOMD 功能似乎杀红了眼,有时候即使用户没有感到任何内存压力,它也会莫名其妙地终止正在运行的程序,比如 Firefox、Chrome 或 Visual Studio Code,体验极差的用户在 Ubuntu 社区邮件列表中大量留言吐槽。

一位沮丧的用户写道

在杀死应用程序之前应该有一个警告,以便有机会保存应用程序数据。杀死应用程序后至少应该有道歉和解释。当前的行为给人的印象是 Ubuntu 22.04 使用起来不可靠且不安全,这对于 LTS 版本来说是个大问题。

img

随后,Canonical 工程师 Nick Rosbrook 在邮件中解释了 OOMD 杀死进程的条件:

  • 条件 1:当总系统的内存使用量和交换使用量都超过 SwapUsedLimit(在 Ubuntu 上默认为 90%), cgoups 中超过 5% 的交换就会成为 OOM 的终结对象。
  • 条件 2:当一个单元的 cgroup 内存压力超过 MemoryPressureLimit ,则监控后代 cgroups 将从具有最多回收率的进程开始执行终止。

在实践中,大部分应用被杀死都是因为条件 1,很大程度上是因为 Ubuntu 只提供了 1GB 的交换空间, SwapUsedLimit 太容易达到 90%。

基于进程的终止条件,Nick 提出了一些改动的思路,比如改变 systemd-oomd 计算 / 触发内存值的方式,又或是增加 SwapUsedLimit 的值,因为 1 GB 实在太少了。

社区现已针对该问题启动了一个 Ubuntu 开发线程,征求更广泛的 Ubuntu 社区反馈,该问题应该会在 22.04.1 更新中得到解决。

相关链接

本站新闻禁止未经授权转载,违者依法追究相关法律责任。授权请联系:oscbianji#oschina.cn

本文标题:Ubuntu 正在处理 22.04 版本频繁杀死应用的问题

原文地址:https://www.oschina.net/news/199125/ubuntu-22-04-systemd-oom-killing-apps

<think>好的,我现在需要帮助用户分析他们提供的`systemd-localed`服务状态输出。用户之前遇到了时间格式不生效的问题,按照之前的建议检查了服务状态。现在用户给出了`sudo systemctl status systemd-localed`的结果,并希望得到解释。 首先,我要理解用户的需求。他们可能对`systemd-localed`服务的状态不太清楚,特别是看到“inactive (dead)”可能会担心服务是否正常运行。需要解释服务的状态信息,以及为什么它显示为inactive,是否正常,以及如何影响之前的区域设置问题。 接下来,我需要分析用户提供的输出内容。服务状态显示为“inactive (dead)”,但下方有多次启动和成功退出的日志。这说明`systemd-localed`是一个按需启动的服务,只有在需要时才会被触发,完成任务后自动停止。这种设计在systemd服务中很常见,特别是对于某些只在特定事件发生时运行的服务。 然后,我需要将这些信息转化为用户容易理解的中文解释。需要指出服务当前状态是正常的,因为它不是常驻服务。同时,日志中的多次“Succeeded”表明服务在每次配置更改后被正确触发,说明之前的操作(如重启服务)是有效的。 此外,用户可能关心这个服务状态是否与他们的问题相关。需要确认即使服务处于inactive状态,区域设置是否已经正确应用。可能需要建议用户检查当前的locale设置,或者确认之前的步骤是否已正确执行,比如生成区域、配置文件是否被覆盖等。 还要注意用户之前的问题是否已经解决,或者是否还存在其他潜在问题。例如,如果用户按照所有步骤操作,但时间格式仍未改变,可能需要进一步检查其他配置或服务的影响。 最后,确保回答结构清晰,分点解释,帮助用户逐步理解问题所在,并提供进一步的排查建议,比如检查当前生效的LC_TIME变量,或者重新生成区域设置等。</think>--- ### **服务状态分析** 你提供的 `systemd-localed.service` 状态信息如下: ```plaintext ● systemd-localed.service - Locale Service Loaded: loaded (/lib/systemd/system/systemd-localed.service; static; vendor preset: enabled) Active: inactive (dead) Docs: man:systemd-localed.service(8) man:locale.conf(5) man:vconsole.conf(5) https://www.freedesktop.org/wiki/Software/systemd/localed Apr 02 14:13:18 pc-ly systemd[1]: systemd-localed.service: Succeeded. ... (多次启动与成功记录) ``` --- ### **关键信息解读** 1. **服务状态** - **`Active: inactive (dead)`**: 表示该服务当前未运行。 - **原因**:`systemd-localed` 是一个按需触发的服务,仅在修改区域或键盘设置时临时启动,完成任务后自动退出。 - **是否正常**:是正常现象,无需保持常驻运行。 2. **启动记录** - 日志中显示多次 **`Starting Locale Service`** 和 **`Succeeded`**: 表明服务在以下场景被触发: - 手动修改 `/etc/locale.conf` - 通过 `localectl` 命令调整区域设置 - 系统检测到区域配置变更 3. **服务性质** - **`Loaded: static`**: 表示该服务无法直接通过 `systemctl start` 长期运行,只能由系统事件触发。 --- ### **对时间格式问题的影响** - **服务已正常工作**: 日志中多次显示 `Succeeded`,表明服务已正确响应区域配置变更,**排除服务本身故障**。 - **时间格式未生效的可能原因**: 1. 未正确设置 `LC_TIME`(如配置被其他文件覆盖) 2. 缺失区域支持(如 `en_DK.UTF-8` 未生成) 3. 终端未重新加载环境(需重启或重登) --- ### **建议操作** 1. **确认当前生效的 `LC_TIME`** ```bash locale | grep LC_TIME ``` 2. **检查区域是否生成** ```bash locale -a | grep en_DK.UTF-8 ``` 3. **强制重载区域配置** ```bash sudo systemctl restart systemd-localed # 重新登录或重启终端 ``` --- ### **扩展说明** - **为何服务频繁启动/停止**: 系统设计如此,`systemd-localed` 仅用于即时响应配置变更,无需持续运行。 - **与时间格式的关联**: 该服务负责将 `/etc/locale.conf` 的配置同步到系统环境,但**不直接控制终端会话**。用户需确保 Shell 环境变量(如 `LC_TIME`)未被覆盖。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学亮编程手记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值