Systemd-разрешение высокой загрузки процессора после обновления до 17.04

28

Я недавно обновил свой Xubuntu с 16.10 до 17.04.

Все вещи работают хорошо, кроме systemd-разрешения. иногда это делает использование процессора слишком высоким, и я не знаю, почему эта проблема произошла.

И вот 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, это может быть полезно для ответа)

Али Размдидех
источник

Ответы:

36

У меня был похожий конфликт между systemd-resolver и dnsmasq на порту 53.

/unix/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.

MetricMike
источник
5
Это работало, но тогда у меня не было DNS и я не мог получить доступ к веб-сайтам по имени.
abalter
@abalter Моя проблема заключалась в петле между systemd-resolv и dnsmasq, поэтому отключение одного сработало для меня. Если у вас все еще есть эта проблема, мне было бы любопытно, как вы topвыглядите и обнаружит ли это петлю между systemd-resolver и другой утилитой.
MetricMike
Да, это resolvedделает то же самое, что dnsmasq? Должны ли мы отключить один из них навсегда? Потому что на самом деле не имеет смысла иметь два локальных преобразователя DNS (я до сих пор не убежден в одном TBH, но я решил пойти с потоком и не настраивать мой
конфиг
о боже ... это так хорошо. глушение вентилятора моего процессора в тот момент, когда я перезапустил systemd-resolved ... но теперь кажется, что хром достигает 100?
Джонни Асмар
1
Да, у этого решения, казалось, были нежелательные побочные эффекты (в том числе убийство Thunderbird) ... Посмотрите ответ ниже от Markackerman для хитрости, которая сработала для меня.
Джонни Асмар
24

Вызвали проблемы с другими приложениями (teamViewer в моем случае)

Предложено другими шагами решения

Добавить строку DNSMASQ_EXCEPT=loв/etc/default/dnsmasq

sudo nano /etc/default/dnsmasq

Перезапустите dnsmasq через

sudo service systemd-resolved restart

Скажи спасибо, если я помог, он вернулся к нормальному состоянию и НЕ работает с другими приложениями, как предыдущий метод DID.

Ура, Марк

markackerman8-gmail.com
источник
1
sudo nanoэто не способ редактирования конфигов, sudoeditдолжен использоваться вместо этого. И systemctlэто способ перезапустить сервисы с помощью systemd. Прежде всего, это не работает для меня, я все еще вижу 100% загрузки процессора.
Иван Анищук
И разве это эффективно не отключает dnsmasq? Почему бы не отключить его полностью тогда?
Иван Анищук
@IvanAnishchuk ты наполовину прав. Он отключает механизм DNS DNSMasq, но он также имеет механизм DHCP.
Моше
10

systemd-resolved сходит с ума, когда кто-то изменяет файл /etc/resolv.conf, который должен указывать на свой собственный адрес прослушивания 127.0.0.53.

Чтобы кто-то мог использовать любой сценарий, запускаемый сетевыми событиями (VPN идет вверх или вниз, DHCP и т. Д.)

Если вы установите для сервера имен значение 127.0.0.53, то systemd-resolved "успокоится" через несколько секунд.

Предполагая, что все соблюдают правила, и только используя resolvconf для изменения конфигурации решателя, вы также можете сделать это:

Файл /etc/resolvconf/interface-orderопределяет порядок использования серверов имен в зависимости от сетевого интерфейса, из которого они были получены.

Если вы добавите запись для systemd-resolvedвверху файла, она всегда будет считаться первой, и файл не будет изменен.

xalkina
источник
2
Итак, оба ответа, приведенные выше, в конце концов подвели меня. Но этот вел себя так же, как и предполагалось. Отменил мой resolv.conf (по какой-то причине для nameserver было установлено значение 127.0.0.1). Даже не нужно было перезагружать systemd, и все снова прекращается. Наблюдая за моими процессами сейчас, dnsmasq снова за кадром, где и должно быть! ЭТО должен быть принятый ответ. Спасибо @xalkina!
Джонни Асмар
1
Эта проблема, кажется, возвращается после перезагрузки ... Есть идеи, что бы изменить мой resolv.conf?
Джонни Асмар
1
Это решение работает и для меня (в то время как два выше не работает)
Алекс Хоппус
2

У меня была такая же проблема в 18.04. systemd-resolvedи dnsmasqсклонны к петле. Я решил это так:

Добавьте или раскомментируйте следующую строку в /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
Дэниел Пернольд
источник