Syrupsystem Asked: 2018-05-15 00:53:56 +0800 CST2018-05-15 00:53:56 +0800 CST 2018-05-15 00:53:56 +0800 CST 进程accounts-daemon占用100%的CPU 772 我有几台运行 Ubuntu 16.04 的服务器突然有accounts-daemon进程使用了 100% 的 CPU。 3周前第一次出现,我搬家/var/log/wtmp重新创建,立马解决了问题。 这是我遇到的第一个解决方案,另一个是禁用这些wtmp登录proftpd.conf。 这样做有什么风险吗?它会解决问题吗? ubuntu cpu-usage 2 个回答 Voted Best Answer ArpadB 2018-12-30T23:14:25+08:002018-12-30T23:14:25+08:00 在 16.04 的 Ubuntu 上, accounts-daemon占用了近 100% 的 CPU,我也遇到了同样的问题。 简而言之,根本原因是串行控制台 agetty -s 不断(即每分钟几次)由systemd重新启动。 (我承认没有完全回答 Sam 的主要问题——即完全禁用wtmp——,但其他有麻烦的人可能会找到这个页面——就像我一样) == 好奇者的详细信息: account-daemon 上的strace显示它不断地访问 /var/log/wtmp,这确实是大约 300 MB 并且还在不断增长。不幸的是,last没有显示任何内容,但另一个实用程序utmpdump在 ttyS* 串行控制台上显示了许多失败的 agetty 尝试: [6] [30697] [tyS2] [登录] [ttyS2] [] [0.0.0.0] [2018 年 12 月 30 日星期日 07:19:34 CET] [6] [30698] [tyS1] [登录] [ttyS1] [] [0.0.0.0] [2018 年 12 月 30 日星期日 07:19:34 CET] [8] [30698] [tyS1] [] [ttyS1] [] [0.0.0.0] [2018 年 12 月 30 日星期日 07:19:44 CET] [8] [30697] [tyS2] [] [ttyS2] [] [0.0.0.0] [2018 年 12 月 30 日星期日 07:19:44 CET] [5] [30707] [tyS2] [] [ttyS2] [] [0.0.0.0] [2018 年 12 月 30 日星期日 07:19:44 CET] [6] [30707] [tyS2] [登录] [ttyS2] [] [0.0.0.0] [2018 年 12 月 30 日星期日 07:19:44 CET] [8] [30707] [tyS2] [ ] [ttyS2 ] [ ] [0.0.0.0 ] [2018 年 12 月 30 日星期日 07:19:48 CET] 确实,有一些串行控制台以某种方式被激活(systemctl | grep ttyS.*service),我通过诸如“systemctl disable [email protected]”之类的命令将其删除(我不知道为什么以及如何激活这些串行 agetty-s,但这是一个非常古老的系统。) wtmp 立即停止增长,并且 accounts-daemon 从顶部输出中消失了。我猜 account-daemon 只为新的 wtmp 记录激活,所以即使它效率低下,它现在也很少运行。 干杯:阿帕德 JdeBP 2018-05-15T07:40:17+08:002018-05-15T07:40:17+08:00 它会解决我的问题吗? 不太可能。早在 2012 年,Chris Siebenmann 就观察到 Accounts 服务是一个系统范围的桌面总线服务器,它的运行效率非常低,而且相当狡猾。其架构中突出显示的一些问题直到今天似乎仍然存在。它处理各种数据库的方式,包括登录数据库和帐户数据库,仍然涉及一些全表扫描。并且具有解析用户提供的 shell 脚本的超级用户程序的 Debian 特定添加仍然存在。 当有人指出,试图改善性能问题的一个补丁假设一个影子密码系统建立在 Unix 版本 7 帐户数据库和伴随的 API 之上,并破坏了现代 BSD,后者已将帐户数据库从未排序的冒号分隔的 1 切换为正确-line-per-record files 到索引的 Berkeley DB 文件,Freedesktop 错误跟踪器中的一位程序作者的响应是 BSD 可能应该回到旧系统;完全忽略了表访问效率低下是问题的一部分这一点。 进一步阅读 克里斯·西本曼 (2012-08-23)。说明 Ubuntu 小丑车,AccountsService 版。克里斯的维基。 彼得·格雷 (2012-02-26)。帐户守护进程的性能很差。Ubuntu 错误 #941673。 瓦迪姆·鲁特科夫斯基 (2012-04-02)。 帐户守护进程的性能很差。Freedesktop 错误 #48177。 乔纳森·德博因·波拉德 (2018)。Unix 登录数据库。经常给出答案。
在 16.04 的 Ubuntu 上, accounts-daemon占用了近 100% 的 CPU,我也遇到了同样的问题。
简而言之,根本原因是串行控制台 agetty -s 不断(即每分钟几次)由systemd重新启动。
(我承认没有完全回答 Sam 的主要问题——即完全禁用wtmp——,但其他有麻烦的人可能会找到这个页面——就像我一样)
==
好奇者的详细信息:
[6] [30697] [tyS2] [登录] [ttyS2] [] [0.0.0.0] [2018 年 12 月 30 日星期日 07:19:34 CET]
[6] [30698] [tyS1] [登录] [ttyS1] [] [0.0.0.0] [2018 年 12 月 30 日星期日 07:19:34 CET]
[8] [30698] [tyS1] [] [ttyS1] [] [0.0.0.0] [2018 年 12 月 30 日星期日 07:19:44 CET]
[8] [30697] [tyS2] [] [ttyS2] [] [0.0.0.0] [2018 年 12 月 30 日星期日 07:19:44 CET]
[5] [30707] [tyS2] [] [ttyS2] [] [0.0.0.0] [2018 年 12 月 30 日星期日 07:19:44 CET]
[6] [30707] [tyS2] [登录] [ttyS2] [] [0.0.0.0] [2018 年 12 月 30 日星期日 07:19:44 CET]
[8] [30707] [tyS2] [ ] [ttyS2 ] [ ] [0.0.0.0 ] [2018 年 12 月 30 日星期日 07:19:48 CET]
确实,有一些串行控制台以某种方式被激活(systemctl | grep ttyS.*service),我通过诸如“systemctl disable [email protected]”之类的命令将其删除(我不知道为什么以及如何激活这些串行 agetty-s,但这是一个非常古老的系统。)
wtmp 立即停止增长,并且 accounts-daemon 从顶部输出中消失了。我猜 account-daemon 只为新的 wtmp 记录激活,所以即使它效率低下,它现在也很少运行。
干杯:阿帕德
不太可能。早在 2012 年,Chris Siebenmann 就观察到 Accounts 服务是一个系统范围的桌面总线服务器,它的运行效率非常低,而且相当狡猾。其架构中突出显示的一些问题直到今天似乎仍然存在。它处理各种数据库的方式,包括登录数据库和帐户数据库,仍然涉及一些全表扫描。并且具有解析用户提供的 shell 脚本的超级用户程序的 Debian 特定添加仍然存在。
当有人指出,试图改善性能问题的一个补丁假设一个影子密码系统建立在 Unix 版本 7 帐户数据库和伴随的 API 之上,并破坏了现代 BSD,后者已将帐户数据库从未排序的冒号分隔的 1 切换为正确-line-per-record files 到索引的 Berkeley DB 文件,Freedesktop 错误跟踪器中的一位程序作者的响应是 BSD 可能应该回到旧系统;完全忽略了表访问效率低下是问题的一部分这一点。
进一步阅读