systemd-resolver użycie wysokiej mocy procesora po aktualizacji do 17.04

28

Niedawno zaktualizowałem moje Xubuntu z 16.10 do 17.04.

Wszystkie rzeczy działają dobrze oprócz systemd-resolver. czasami sprawia, że ​​użycie procesora jest zbyt duże i nie wiem, dlaczego ten problem się zdarzył.

A oto wynik toppolecenia:

  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                                   

Nie wiem, dlaczego ten problem się zdarza, ale zwykle występuje po uruchomieniu niektórych poleceń, takich jak sudo apt update.

(Używam Tora i OBFS4PROXY, może to być pomocne do odpowiedzi)

Ali Razmdideh
źródło

Odpowiedzi:

36

Miałem podobny konflikt między systemd-resolver a dnsmasq na porcie 53.

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

i

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

doprowadziły mnie do dodania DNSStubListener=now /etc/systemd/resolved.confczym sudo service systemd-resolved restart.

MetricMike
źródło
5
To działało, ale potem nie miałem DNS i nie mogłem uzyskać dostępu do stron internetowych według nazwy.
abalter
@abalter Mój problem dotyczył w szczególności pętli między systememd-resolver a dnsmasq, więc wyłączenie jednego działało dla mnie. Jeśli nadal masz ten problem, byłbym ciekawy, topjak wyglądasz, a jeśli to ujawnia pętlę między rozwiązaniem systemd a innym narzędziem.
MetricMike,
Tak, czy to resolvedrobi to samo co dnsmasq? Czy powinniśmy wyłączyć jedną z nich na dobre? Ponieważ tak naprawdę nie ma sensu mieć dwóch lokalnych resolverów dns (wciąż nie jestem przekonany o jednym TBH, ale postanowiłem pójść z prądem i nie dostosowywać mojej konfiguracji)
Ivan Anishchuk
omg ... to było takie dobre. wyciszenie mojego wentylatora procesora natychmiast po ponownym uruchomieniu systemu-rozwiązany ... ale teraz chrom wydaje się zwiększać do 100?
Jonny Asmar
1
Yeh - to rozwiązanie wydawało się mieć niepożądane skutki uboczne (w tym zabicie Thunderbirda) ... Zobacz poniższą odpowiedź od markackerman na sztuczkę, która zadziałała dla mnie.
Jonny Asmar
24

Przyczyny problemów z innymi aplikacjami (w moim przypadku teamViewer)

Sugerowane przez inne kroki rozwiązania

Dodaj linię DNSMASQ_EXCEPT=lodo/etc/default/dnsmasq

sudo nano /etc/default/dnsmasq

Uruchom ponownie dnsmasq przez

sudo service systemd-resolved restart

Powiedz Dzięki, jeśli pomogłem, wróciło do normy i NIE psuje się z innymi aplikacjami, tak jak poprzednia metoda DID.

Pozdrawiam, Mark

markackerman8-gmail.com
źródło
1
sudo nanonie jest sposobem edytowania konfiguracji, sudoeditnależy zamiast tego użyć. I systemctljest sposobem na ponowne uruchomienie usługi z Systemd. Przede wszystkim nie działa dla mnie, wciąż widzę 100% użycia procesora.
Ivan Anishchuk
I czy to nie wyłącza skutecznie dnsmasq? Dlaczego więc nie wyłączyć go całkowicie?
Ivan Anishchuk
@IvanAnishchuk masz rację w połowie. Wyłącza mechanizm DNS DNSMasq, ale ma również mechanizm DHCP.
Mosze
10

systemd-resolved wariuje, gdy ktoś modyfikuje plik /etc/resolv.conf, co ma wskazywać na jego własny adres nasłuchiwania 127.0.0.53.

Że ktoś może być dowolnym skryptem uruchamianym przez zdarzenia sieciowe (VPN w górę lub w dół, DHCP itp.)

Jeśli ustawisz serwer nazw z powrotem na 127.0.0.53, systemd-rozwiązany „uspokoi się” kilka sekund później.

Zakładając, że wszyscy przestrzegają reguł, i tylko przy użyciu resolvconf do modyfikowania konfiguracji resolvera, możesz również to zrobić:

Plik /etc/resolvconf/interface-orderokreśla kolejność używania serwerów nazw, w zależności od interfejsu sieciowego, z którego je otrzymano.

Jeśli dodasz wpis systemd-resolvedw górnej części pliku, zawsze będzie on brany pod uwagę jako pierwszy i plik nie zostanie zmodyfikowany.

Xalkina
źródło
2
Tak więc obie powyższe odpowiedzi w końcu mnie zawiodły. Ale ten zachował się tak, jak przewidywano. Odwróciłem mój resolv.conf (z jakiegoś powodu serwer nazw został ustawiony na 127.0.0.1). Nie musiałem nawet ponownie uruchamiać systemu i wszystko znowu się skończyło. Obserwując teraz moje procesy, dnsmasq znów jest poza radarem, tam gdzie powinno być! TO powinna być zaakceptowana odpowiedź. Dziękuję @xalkina!
Jonny Asmar
1
Ten problem wydaje się powracać po ponownym uruchomieniu ... Jakieś pomysły, co zmodyfikuje mój resolv.conf?
Jonny Asmar
1
To rozwiązanie działa również dla mnie (podczas gdy dwa powyższe nie działają)
Alex Hoppus
2

Miałem ten sam problem w 18.04. systemd-resolvedi dnsmasqmają tendencję do zapętlania się. Rozwiązałem to w ten sposób:

Dodaj lub usuń komentarz z następującego wiersza w /etc/default/dnsmasq:

IGNORE_RESOLVCONF=yes

Utwórz własny resolvplik ( /etc/resolv.personal), aby zdefiniować serwery nazw. Możesz użyć dowolnego serwera nazw tutaj. Wziąłem dwa z OpenNIC .

nameserver 5.132.191.104
nameserver 103.236.162.119

W /etc/dnsmasq.confdodatku lub odkomentować następującą linię:

resolv-file=/etc/resolv.personal

Następnie uruchom ponownie dnsmasqi wyłączyć domyślną rozpoznawania nazw: systemd-resolved.

sudo service dnsmasq restart
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
Daniel Pernold
źródło