utilisation élevée du processeur par systemd-resolve après la mise à jour du 17.04

28

J'ai récemment mis à jour mon Xubuntu du 16.10 au 17.04.

Tout fonctionne bien sauf systemd-resolver. Parfois, cela rend l'utilisation du processeur trop élevée et je ne sais pas pourquoi ce problème s'est produit.

Et voici la topsortie de la commande:

  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                                   

Je ne sais pas pourquoi ce problème s'est produit, mais il se produit généralement lors de l'exécution de certaines commandes comme sudo apt update.

(J'utilise tor et obfs4proxy, cela peut être utile pour la réponse)

Ali Razmdideh
la source

Réponses:

36

J'ai eu un conflit similaire entre systemd-resolver et dnsmasq sur le port 53.

/unix/304050/how-to-avoid-conflicts-between-dnsmasq-and-systemd-resolved

et

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

m'a amené à ajouter DNSStubListener=noà /etc/systemd/resolved.confpuis sudo service systemd-resolved restart.

MetricMike
la source
5
Cela a fonctionné, mais je n'avais pas de DNS et ne pouvais pas accéder aux sites Web par leur nom.
abalter
@abalter Mon problème était spécifiquement une boucle entre systemd-resolver et dnsmasq, donc en désactiver une a fonctionné pour moi. Si vous rencontrez toujours ce problème, je serais curieux de savoir à quoi vous topressemblez et si cela révèle une boucle entre systemd-resolver et un autre utilitaire à la place.
MetricMike
Ouais, est-ce resolvedque cela fait la même chose que dnsmasq? Faut-il désactiver définitivement l'un d'entre eux? Parce que cela n'a pas vraiment de sens d'avoir deux résolveurs DNS locaux (je ne suis toujours pas convaincu d'un TBH mais j'ai décidé de suivre le flux et de ne pas personnaliser ma configuration)
Ivan Anishchuk
omg ... c'était si bon. le silence de mon ventilateur cpu l'instant où j'ai redémarré systemd-résolu ... mais maintenant le chrome semble atteindre 100?
Jonny Asmar
1
Ouais - cette solution semblait avoir des effets secondaires indésirables (y compris la mort de Thunderbird) ... Voir la réponse ci-dessous de Markackerman pour l'astuce qui a fonctionné pour moi.
Jonny Asmar
24

Problèmes causés avec d'autres applications (teamViewer dans mon cas)

Suggérée par une autre étape de la solution

Ajoutez la ligne DNSMASQ_EXCEPT=loà/etc/default/dnsmasq

sudo nano /etc/default/dnsmasq

Redémarrez dnsmasq via

sudo service systemd-resolved restart

Dire merci Si j'ai aidé, il est revenu à la normale et ne tourne pas rond avec d'autres applications, comme la méthode précédente l'a fait.

À la vôtre, Mark

markackerman8-gmail.com
la source
1
sudo nanon'est pas le moyen de modifier les configurations, sudoeditdevrait être utilisé à la place. Et systemctlc'est le moyen de redémarrer les services avec systemd. Par-dessus tout, cela ne fonctionne pas pour moi, je vois toujours 100% d'utilisation du processeur.
Ivan Anishchuk
Et cela ne désactive-t-il pas efficacement dnsmasq? Pourquoi ne pas le désactiver complètement alors?
Ivan Anishchuk
@IvanAnishchuk, vous avez à moitié raison. Il désactive le mécanisme DNS de DNSMasq mais il dispose également d'un mécanisme DHCP.
Moshe
10

résolu par systemd devient fou quand quelqu'un modifie le fichier /etc/resolv.conf, qui est destiné à pointer vers sa propre adresse d'écoute 127.0.0.53.

Que quelqu'un pourrait être n'importe quel script déclenché par des événements de réseautage (VPN à venir ou à descendre, DHCP, etc.)

Si vous redéfinissez le serveur de noms sur 127.0.0.53, la résolution de systemd se "calmera" quelques secondes plus tard.

En supposant que tout le monde respecte les règles et utilise uniquement resolvconf pour modifier la configuration du résolveur, vous pouvez également faire ceci:

Le fichier /etc/resolvconf/interface-orderspécifie l'ordre dans lequel les serveurs de noms seront utilisés, en fonction de l'interface réseau à partir de laquelle ils ont été reçus.

Si vous ajoutez une entrée pour systemd-resolveden haut du fichier, elle sera toujours considérée en premier et le fichier ne sera pas modifié.

xalkina
la source
2
Donc, les deux réponses ci-dessus ont fini par me manquer à la fin. Mais celui-ci s'est comporté comme prévu. Inversé mon resolv.conf (le serveur de noms a été défini sur 127.0.0.1 pour une raison quelconque). Je n'ai même pas eu besoin de redémarrer systemd et les choses se sont de nouveau arrêtées. En regardant mes processus maintenant, dnsmasq est de nouveau hors du radar, où il devrait être! CECI devrait être la réponse acceptée. Merci @xalkina!
Jonny Asmar
1
Ce problème semble revenir après un redémarrage ... Des idées ce qui serait en train de modifier mon resolv.conf?
Jonny Asmar
1
Cette solution fonctionne pour moi non plus (contrairement aux deux ci-dessus)
Alex Hoppus
2

J'ai eu le même problème en 18.04. systemd-resolvedet dnsmasqont tendance à boucler. Je l'ai résolu de cette façon:

Ajoutez ou décommentez la ligne suivante dans /etc/default/dnsmasq:

IGNORE_RESOLVCONF=yes

Créez votre propre resolvfichier ( /etc/resolv.personal) pour définir les serveurs de noms. Vous pouvez utiliser n'importe quel serveur de noms ici. J'en ai pris deux à OpenNIC .

nameserver 5.132.191.104
nameserver 103.236.162.119

En /etc/dnsmasq.confajouter ou décommenter la ligne suivante:

resolv-file=/etc/resolv.personal

Redémarrez ensuite dnsmasqet désactiver le résolveur par défaut: systemd-resolved.

sudo service dnsmasq restart
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
Daniel Pernold
la source