标签: systemd

systemd 中的内存限制

我正在使用 systemd 在 Ubuntu 18.04 LTS 服务器上运行 Celery,这是一个 python 分布式任务调度程序。

我必须安排大部分长时间运行的任务(需要几分钟才能执行),根据数据,这些任务最终可能会消耗大量 RAM。我想采取某种安全措施来控制内存使用。

我在这里读到,您可以使用MemoryHighMemoryMax选项控制 systemd 服务使用的 RAM 量

我在我的 Celery 服务设置中使用了这些选项,并且我观察了当 celery 服务达到给定限制时会发生什么情况htop

该服务停止执行并置于“D”状态,但保持该状态并且分配的内存未释放。

systemd 是否有可能终止占用内存的进程?

更新

正如下面的评论中所建议的,我已经尝试了一些诊断,并且我将添加其他问题详细信息。

Linux 服务器运行在 Virtual Box 托管的开发虚拟机上,仅运行资源消耗任务。

MemoryMax设置设为百分比 (35%)。

下图中可以看到htop中的进程状态

htop 暂停进程

正如这个问题的答案中所建议的,以下是挂起的进程堆栈的内容。

[<0>] __lock_page_or_retry+0x19b/0x2e0
[<0>] do_swap_page+0x5b4/0x960
[<0>] __handle_mm_fault+0x7a3/0x1290
[<0>] handle_mm_fault+0xb1/0x210
[<0>] __do_page_fault+0x281/0x4b0
[<0>] do_page_fault+0x2e/0xe0
[<0>] page_fault+0x45/0x50
[<0>] 0xffffffffffffffff
Run Code Online (Sandbox Code Playgroud)

systemd celery

4
推荐指数
1
解决办法
6460
查看次数

systemd/系统覆盖应该如何工作?

我正在摆弄一些超时设置,并试图找出为 systemd/系统守护进程设置内容的正确方法。具体来说,这是一个动力不足的服务器,并且我在启动 clamd 时总是超时,因此我试图弄清楚需要将 TimeoutStartSec 参数设置为多高。我试过

systemctl edit --full clamd@.service

并编辑它说

TimeoutStartSec=20min

然后做了systemctl daemon-reload

但7分钟后它就神秘地超时了。最终,我发现/usr/lib/systemd/system/clamd@.serviceTimeoutStartSec=420

可能违背了所有正确的做法,我编辑了/usr/lib文件的版本,并注释掉了该行。果然,这改变了事情,但它似乎仍然没有读取版本/etc/systemd。一旦我将其注释掉,它就会在 90 秒后开始超时,我想这一定是默认值。

作为临时解决方法,我已将/usr/lib版本编辑为我想要的 20 分钟,但是......这似乎不是正确的做事方式。

应该systemctl edit编辑版本吗/etc/systemd/system?这是公认的正确做事方式吗?我还需要做更多的事情吗systemctl daemon-reload

对有关正确方法的任何和所有建议持开放态度。

TIA

clamav systemd amazon-linux-2

4
推荐指数
1
解决办法
1724
查看次数

授予用户 sudo 权限来启动/停止/等 systemd 服务,无需 sudo 密码

我有一个非 root 用户,我想授予他们 sudo 权限来启动和停止(等)systemd 服务文件,而无需密码。

\n

我尝试在/etc/sudoers.d/servicename (其中[username][servicename]是实际名称)中创建以下文件:

\n
[username] ALL=(root) NOPASSWORD: systemctl start [servicename]\n[username] ALL=(root) NOPASSWORD: systemctl stop [servicename]\n[username] ALL=(root) NOPASSWORD: systemctl restart [servicename]\n
Run Code Online (Sandbox Code Playgroud)\n

(对许多系统命令重复,例如reload// try-restart/ enable\xe2\x80\xa6)

\n

visudo告诉我这是一个语法错误。我该如何解决这个问题?

\n

我想放入脚本(正在以非 root 用户身份运行)sudo systemctl stop [servicename]

\n

Ubuntu Linux 18.04,来自 ubuntu 的 systemd(这是 v245)。我也希望它能在 Ubuntu 20.04 上运行。

\n

sudo systemd

4
推荐指数
1
解决办法
1万
查看次数

可预测的网络接口名称

所以,我已经研究这个 systemd“可预测的网络接口名称”相当长一段时间了,并对它的工作原理有了一些了解,但出于对雷神的热爱,我无法弄清楚enp X s Y的命名方案,我知道它应该指示设备的物理位置,但是XY到底意味着什么?物理位置是哪一个?另一个到底表示什么,也许是总线索引?我不知道而且真的很想知道。我到处搜索,却找不到任何详细解释这个命名方案如何工作的内容。

networking pci devices systemd

4
推荐指数
1
解决办法
240
查看次数

systemd:限制服务可以重新启动的次数

我想限制我的服务可以重新启动的次数。有突发限制

StartLimitIntervalSec=60
StartLimitBurst=5
Run Code Online (Sandbox Code Playgroud)

但它们限制了服务在指定时间间隔内可以重新启动的次数。有没有办法指定一个服务一般可以重启多少次?就好像间隔被设置为无穷大一样。

systemd 245 (245.4-4ubuntu3.2)
Run Code Online (Sandbox Code Playgroud)

systemd

4
推荐指数
1
解决办法
5239
查看次数

如何使用 systemd 对 Web 服务的正确关闭和启动进行排序?

我正在尝试使用 systemd 来构建 Apache、PHP-FPM 和 MariaDB 服务的关闭和启动:

这些是文件/etc/systemd/system夹中的其他配置文件:

# httpd.service
.include /usr/lib/systemd/system/httpd.service
[Unit]
After=mariadb.service php-fpm.service
Before=php-fpm.service

# php-fpm.service
.include /usr/lib/systemd/system/php-fpm.service
[Unit]
Before=mariadb.service
Run Code Online (Sandbox Code Playgroud)

我的意图是仅在 PHP-FPM 和 MariaDB 启动后才启动 Apache,并在停止 PHP-FPM 之前停止 Apache,在 MariaDB 之前停止 PHP-FPM。

但是,我在启动和关闭时都遇到错误:

12:42:09 systemd[1]: Found ordering cycle on php-fpm.service/stop
12:42:09 systemd[1]: Found dependency on mariadb.service/stop
12:42:09 systemd[1]: Found dependency on php-fpm.service/stop
12:42:09 systemd[1]: Job httpd.service/stop deleted to break ordering cycle starting with php-fpm.service/stop
12:42:09 systemd[1]: Stopping MariaDB database server...
12:42:12 systemd[1]: Stopped MariaDB database server. …
Run Code Online (Sandbox Code Playgroud)

startup service systemd shutdown

3
推荐指数
1
解决办法
5037
查看次数

转发 systemd 日志消息/收集 systemd 日志消息

如何收集 systemd 日志事件(拉)或转发 systemd 日志事件(推送)?

我想要类似转发的事件日志(http://windows.tips.net/T012878_What_is_the_Purpose_of_the_Forwarded_Events_Event_Log.html)但在 Linux 下。

我正在使用 ArchLinux,但不确定这是否重要。

我应该将日志转发到系统日志然后收集系统日志吗?这样做会丢失任何信息吗?我可以在没有 syslog 守护程序的情况下收集日志消息吗?

linux arch-linux systemd journald

3
推荐指数
1
解决办法
4998
查看次数

Debian Jessie LXC 容器中的 systemd-journal 占用 100% CPU

在基于 Debian Jessie 创建新的 LXC 之后,在 Ubuntu 14.04 上,systemd-journal 会吃掉所有可用的 CPU。

lxc-create -n jessie -t debian
Run Code Online (Sandbox Code Playgroud)

debian lxc systemd

3
推荐指数
1
解决办法
3916
查看次数

Debian Jessie UpStart / Systemd / SysV 不再重启

我已经在安装了 Upstart 的 Jessie 服务器上进行了一些测试,并将其替换为 SysV,反之亦然。

在此之后,我无法再重新启动。

root@amoo-001:~# reboot
Failed to talk to init daemon.

root@amoo-001:~# systemctl reboot
Failed to get D-Bus connection: Unknown error -1
Run Code Online (Sandbox Code Playgroud)

debian upstart sysv systemd

3
推荐指数
1
解决办法
4724
查看次数

使用 systemd 降低 cron 日志级别

谷歌搜索解决方案,我只找到了一些文章告诉我如何在旧系统中而不是在 systemd 维护的 Linux 下,通过更改 cron init-script 向命令行添加 -L 参数。

我有一个每分钟运行一次的 cron 作业。它为运行 cron 的用户打开和关闭的每个会话记录每次启动和额外的 pam_unix 条目。这是日志日志中的大量胡言乱语。如何在 systemd 环境中设置日志级别,以便我只记录错误和死亡人数?

systemd journald

3
推荐指数
1
解决办法
4028
查看次数