更新到17.04后,systemd解决高CPU使用率


28

我最近将我的Xubuntu从16.10升级到17.04。

除了systemd-resolve之外,其他所有方法都运作良好。有时它会使CPU使用率过高,但我不知道为什么会发生此问题。

这是top命令输出:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                               
  1114 systemd+  20   0   51532   6744   4504 R   100  0.0   9:51.67 systemd-resolve                       
  1152 dnsmasq   20   0   64360   2892   2480 R  38.9  0.0   4:05.53 dnsmasq                               
  1245 root      20   0  376644  89644  64436 S   1.7  0.5   0:35.69 Xorg                                  
  1624 asus      20   0  370160  45820  28488 S   0.7  0.3   0:00.90 python2                               
  2238 asus      20   0 2562816 553112 128492 S   0.7  3.4   2:41.20 firefox                               
    16 root      20   0       0      0      0 S   0.3  0.0   0:01.05 ksoftirqd/1                           
   708 root     -51   0       0      0      0 S   0.3  0.0   0:01.20 irq/95-ELAN1000                       
  1302 root     -51   0       0      0      0 S   0.3  0.0   0:03.68 irq/142-nvidia                        
  1734 asus      20   0  483388  11060   8560 S   0.3  0.1   0:05.45 conky                                 
  2820 root      20   0       0      0      0 S   0.3  0.0   0:00.14 kworker/5:1                           
  3420 asus      20   0   53384   3932   3200 R   0.3  0.0   0:00.76 top                                   

我不知道为什么会发生此问题,但通常会在运行诸如的命令时发生sudo apt update

(我使用的是tor和obfs4proxy,这可能有助于回答问题)

Answers:


36

我在端口53上的systemd-resolve和dnsmasq之间有类似的冲突。

https://unix.stackexchange.com/questions/304050/how-to-avoid-conflicts-between-dnsmasq-and-systemd-resolved

https://github.com/systemd/systemd/pull/4061

带我加DNSStubListener=no进去/etc/systemd/resolved.conf然后sudo service systemd-resolved restart


5
这行得通,但后来我没有DNS,无法按名称访问网站。
abalter

@abalter我的问题特别是systemd-resolve和dnsmasq之间的循环,因此关闭一个对我有用。如果您仍然遇到此问题,我会很好奇您的top外观,并且是否揭示了systemd-resolve和另一个实用程序之间的循环。
MetricMike

是的,这resolved和dnsmasq一样吗?我们应该永久禁用其中之一吗?因为拥有两个本地dns解析器并没有什么意义(我仍然不相信一个TBH,但我决定顺其自然,并且不自定义我的配置)
Ivan Anishchuk

天哪...感觉真好。我重新启动systemd-resolved的那一刻,我的cpu风扇的静音...但是现在chrome似乎飙升到100?
乔尼·阿斯玛

1
是的-此解决方案似乎具有不良副作用(包括杀死雷鸟)...请参阅以下markackerman的答案,以了解对我有用的技巧。
乔尼·阿斯玛

24

其他应用程序引起的问题(在我的情况下为teamViewer)

由另一步骤建议

将行添加DNSMASQ_EXCEPT=lo/etc/default/dnsmasq

sudo nano /etc/default/dnsmasq

通过重启dnsmasq

sudo service systemd-resolved restart

说谢谢,如果我有所帮助,它可以恢复正常,并且不会像以前的方法那样与其他应用程序发生冲突。

干杯,马克


1
sudo nano不是编辑配置的方法,sudoedit应改用。并且systemctl是使用systemd重新启动服务的方法。最重要的是,它对我不起作用,我仍然看到100%的CPU使用率。
伊万·阿尼舒克

而且这不是有效地禁用dnsmasq吗?那为什么不完全禁用它呢?
伊万·阿尼舒克

@IvanAnishchuk你是正确的一半。它确实禁用了DNSMasq的DNS机制,但它也具有DHCP机制。
莫西

10

当有人修改文件时/etc/resolv.conf,systemd-resolved会发疯,这意味着它指向自己的侦听地址127.0.0.53。

有人可能是由网络事件触发的任何脚本(VPN出现故障,DHCP等)

如果将名称服务器设置回127.0.0.53,则systemd-resolved将在几秒钟后“降级”。

假设每个人都遵守规则,并且仅使用resolvconf来修改解析器的配置,您还可以这样做:

该文件/etc/resolvconf/interface-order指定了名称服务器的使用顺序,具体取决于接收它们的网络接口。

如果systemd-resolved在文件顶部添加的条目,则始终会首先考虑该条目,并且不会修改该文件。


2
因此,以上两个答案最终都使我失败了。但是,这一行为的表现与预期的一样。恢复了我的resolv.conf(出于某种原因,名称服务器设置为127.0.0.1)。甚至不需要重新启动systemd,事情又重新发生了。现在观看我的进程,dnsmasq再次不在应有的范围内!这应该是公认的答案。谢谢@xalkina!
乔尼·阿斯玛

1
重新启动后,此问题似乎又回来了...有什么想法会修改我的resolv.conf吗?
乔尼·阿斯玛

1
这个解决方案对我都有效(而以上两个都不对)
Alex Hoppus

2

我在18.04中遇到了同样的问题。systemd-resolveddnsmasq倾向于循环。我是这样解决的:

在中添加或取消注释以下行/etc/default/dnsmasq

IGNORE_RESOLVCONF=yes

创建您自己的resolv文件(/etc/resolv.personal)来定义名称服务器。您可以在此处使用任何名称服务器。我从OpenNIC那里拿了两个。

nameserver 5.132.191.104
nameserver 103.236.162.119

/etc/dnsmasq.conf添加或取消以下行:

resolv-file=/etc/resolv.personal

然后重新启动dnsmasq并禁用默认解析器:systemd-resolved

sudo service dnsmasq restart
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.