беспроигрышный процесс

Иногда я вижу, что процесс distnoted внезапно разворачивается и пережевывает 100% процессор (на одном ядре) и тонну памяти, часто около 1,5 ГБ или около того. Это происходит несколько раз в день, начиная примерно месяц назад.

Командная строка /usr/sbin/distnoted agent, и она запускается launchd, ни одна из которых не помогает. Обычно он работает где-то между 4h и 24h, прежде чем он запустится и привяжет процессор.

Поисковые запросы в Интернете говорят, что distnoted управляет доставкой уведомлений, и многие другие люди сообщают о той же проблеме с ним, но я еще не нашел исправления. Некоторые люди считают, что закрытие приложения-лидера (например, Skype) останавливает его, но я еще не нашел виновника на моей машине. Обычно я запускаю только несколько приложений: Emacs (24.2 из Homebrew), Firefox, Adium и Dash.

Я на Mavericks в конце 2012 года 13 «Retina MBP. Спасибо заранее!

Update:

Я включил ведение журнала distnoted в системном журнале, нажав /var/log/do_dnserver_log, но это мало помогает. Я вижу такие строки (uid 501 - я, 89 я еще не нашел):

distnoted[80011]: # distnote server agent  absolute time: 48754.144787848   civil time: Wed Nov 20 10:52:03 2013   pid: 80011 uid: 501  root: no
distnoted[20]: # distnote server daemon  absolute time: 2.808112262   civil time: Tue Nov 19 09:52:24 2013   pid: 20 uid: 0  root: yes
distnoted[444]: # distnote server agent  absolute time: 16.656997509   civil time: Tue Nov 19 09:52:38 2013   pid: 444 uid: 501  root: no
distnoted[1271]: # distnote server agent  absolute time: 52.518265717   civil time: Tue Nov 19 09:53:14 2013   pid: 1271 uid: 89  root: no
distnoted[689]: Interruption - exiting now.

Я также запускал sudo dtruss -p PID для процесса distnoted, и он выводит строки следующим образом:

kevent64(0x3, 0x7FFF7C3FD130, 0x1)       = 1 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
kevent64(0x3, 0x7FFF7C3FD130, 0x1)       = 1 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
kevent64(0x3, 0x7FFF7C3FD130, 0x1)       = 1 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
__disable_threadsignal(0x1, 0x0, 0x0)    = 0 0
__disable_threadsignal(0x1, 0x0, 0x0)    = 0 0
__disable_threadsignal(0x1, 0x0, 0x0)    = 0 0
kevent64(0x3, 0x7FFF7C3FD130, 0x1)       = 1 0
workq_kernreturn(0x20, 0x0, 0x1)         = 0 0
...
103 голоса | спросил ryan 20 32013vEurope/Moscow11bEurope/MoscowWed, 20 Nov 2013 05:59:05 +0400 2013, 05:59:05

14 ответов


23

Резюме из OP . Это был отличный инструмент для отладки. Первоначально он указывал на то, что Spotlight переиндексирует файловую систему, но я сузил все, что было разрешено индексировать, и я все еще видел проблему. Я закончил создание задания cron, чтобы регулярно убивать. См. Ответ дальше.


Вы можете отлаживать distnoted, создавая файл /var/log/do_dnserver_log Это приводит к тому, что сервер CFNotificationCenter (distnoted) записывает информацию обо всех уведомлениях в системный журнал.

Я бы начал там, перезагрузился и посмотрел на системный журнал, когда процессор всплывает. Это должно сделать преступника легко.

Подробнее о CFNotificationCenter отладки можно найти в официальных документах разработчика здесь: Техническая нота TN2124> CFNotificationCenter

ответил Temikus 22 52013vEurope/Moscow11bEurope/MoscowFri, 22 Nov 2013 18:00:28 +0400 2013, 18:00:28
33

Я тоже это видел. Emacs 24.3.1, Mavericks 10.9.

Я обнаружил, что процесс distnoted успокаивается через несколько секунд после выхода из Emacs.

Я подал ошибку Emacs здесь: http://permalink.gmane.org/gmane.emacs. ошибки /80836

ответил Don Tillman 24 72013vEurope/Moscow11bEurope/MoscowSun, 24 Nov 2013 09:21:25 +0400 2013, 09:21:25
23

Я знаю, что опаздываю на вечеринку, но это утечка памяти, специфичная для Cocoa emacs на Mavericks, которая исправлена ​​в багажнике. Пока есть патч, который вы можете использовать для сборки emacs 24.3 с исправлением.

https://gist.github.com/anonymous/8553178


ответил user68323 23 Jam1000000amThu, 23 Jan 2014 02:49:56 +040014 2014, 02:49:56
15

В течение некоторого времени у меня были те же проблемы с distnoted на el capitan. Мое решение не так жестко, как убивать его регулярно, вместо этого я проверяю, что он не работает (с высоким уровнем использования ЦП), а затем убивает его. Я использую этот скрипт:

#!/bin/sh
#
# check for runaway distnoted, kill if necessary
#
PATH=/bin:/usr/bin
export PATH

ps -reo '%cpu,uid,pid,command' | 
    awk -v UID=$UID '
    /distnoted agent$/ && $1 > 100.0 && $2 == UID { 
        system("kill -9 " $3) 
    }
    '

Сценарий запускается от cron каждую минуту с помощью этой строки в crontab:

*   *  *   *  *   sh "$HOME/bin/checkdistnoted"

На практике сценарий убивает distnoted один или два раза в день, и обычно это происходит после запуска backupd.

Для тех, кому не удобно использовать оболочку OS X (командная строка), следующий скрипт установит скрипт checkdistnoted и запись crontab:

#!/bin/sh
#
# install $HOME/bin/checkdistnoted
# setup crontab to run every minute
# 
# MWR Apr 2016
#

INSTALLCMD=bin/checkdistnoted
cd "$HOME"
[ ! -d bin ] && mkdir bin
[ -f $INSTALLCMD ] || {
    cat > $INSTALLCMD <<-"!!"
    #!/bin/sh
    #
    # check for runaway distnoted, kill if necessary
    #

    PATH=/bin:/usr/bin
    export PATH

    ps -reo '%cpu,uid,pid,command' | 
        awk -v UID=$UID '
        /distnoted agent$/ && $1 >= 100.0 && $2 == UID { 
            # kill distnoted agent with >= 100% CPU and owned by me
            system("kill -9 " $3) 
        }
        '
!!
    chmod +x $INSTALLCMD 
    echo installed $INSTALLCMD
}

INSTALLCRON="# check for runaway distnoted every minute:
* * * * * sh \"\$HOME/$INSTALLCMD\""
crontab -l | grep -q '$HOME'/$INSTALLCMD || {
    crontab -l > mycron
    echo "$INSTALLCRON" >> mycron
    crontab mycron
    rm mycron
    echo updated crontab
}

Вам нужно сохранить вышеуказанное как install_checkdistnoted.sh на рабочем столе, затем запустите Applications/Utilities/Terminal и введите:

cd Desktop
sh install_checkdistnoted.sh 

Если он работает полностью, он распечатает подтверждение каждого из шагов. Сценарий не будет перезаписывать существующий скрипт checkdistnoted или запись crontab.

[Исправлена ​​синтаксическая ошибка в сценарии Август 2016 г. - MR]

ответил Michael Rourke 11 AMpMon, 11 Apr 2016 03:02:08 +030002Monday 2016, 03:02:08
7

я сдался и взял подход кувалды: убивайте его автоматически, каждую минуту. Вздох.

Я помещаю это в ~/Library/LaunchAgents/org.snarfed.pkill_distnoted.plist:

<plist version="1.0">
<dict>
  <key>Label</key>
  <string>org.snarfed.pkill_distnoted</string>
  <key>ProgramArguments</key>
  <array>
    <string>pkill</string>
    <string>-KILL</string>
    <string>-f</string>
    <string>distnoted</string>
  </array>
  <key>StartInterval</key>
  <integer>60</integer>  <!-- every minute -->
</dict>
</plist>

, а затем установил его с помощью launchctl load ~/Library/LaunchAgents/org.snarfed.pkill_distnoted.plist.

ответил ryan 18 WedEurope/Moscow2013-12-18T11:42:18+04:00Europe/Moscow12bEurope/MoscowWed, 18 Dec 2013 11:42:18 +0400 2013, 11:42:18
4

Я делал разные комбинации настроек для удаления, чтобы сузить это поведение; Я думаю, что это режим comint. На 10.9 с emacs 24.3.1 из homebrew (или из emacsforosx) утечка distnoted + emacs (они оба медленно увеличивают потребление памяти) произойдет с одним открытым буфером оболочки. Это не произойдет, если вы просто посетите файлы.

Просто хочу отметить это здесь, gmane, похоже, не работает, и я продолжаю находить эту дискуссию в своем двухнедельном поиске последующих действий для этой проблемы.

ответил Lang Martin 12 ThuEurope/Moscow2013-12-12T19:33:22+04:00Europe/Moscow12bEurope/MoscowThu, 12 Dec 2013 19:33:22 +0400 2013, 19:33:22
2

Это похоже на то, что приложение каким-то образом неправильно использует API уведомлений, предоставляемый macOS. В моем случае виновником был iTerm2. После выхода из него выходят процессы distnoted. Другие виновники, которые были идентифицированы, - Emacs и iTunes.

ответил xApple 27 J0000006Europe/Moscow 2016, 23:31:15
1

Я думаю, что могу вспомнить только два раза, когда distnoted пошел на ураган. По этому поводу было 2 из них, сидящих на вершине списка процессоров, и один из них составлял более 400%. Это произошло вскоре после возвращения в офис и подключения нескольких внешних дисплеев - один из которых был usb powered - я предположил, что это может быть связано. Я не сделал ничего другого, чтобы попытаться исправить эту проблему, прежде чем вытащить USB-дисплей, который мгновенно вызвал здравый смысл. А затем подключить его обратно не привело к повторной проблеме.

Что доказывает? Не знаю!

Я подключаю их сотни раз, и это первый раз, когда мне пришло в голову, что это может быть связано. И так как это не происходит каждый раз, когда я их подключаю, то это может иметь какое-то отношение к тому, чтобы подключить их слишком быстро друг к другу или что-то подобное. Как бы то ни было, я бы поделился тем, что другие люди считают, что это имеет какое-либо отношение к подключению периферийных устройств (если это внешний экран)

ответил petednz - fuzion 29 AMpWed, 29 Apr 2015 09:22:49 +030022Wednesday 2015, 09:22:49
0

Для чего это стоит, я смог исправить эту проблему, отключив свое антивирусное программное обеспечение.

ответил David P. Caldwell 31 TueEurope/Moscow2013-12-31T00:16:58+04:00Europe/Moscow12bEurope/MoscowTue, 31 Dec 2013 00:16:58 +0400 2013, 00:16:58
0

Это случилось и со мной, и это было сбито с ума. После закрытия кучи приложений ничего не помогло.

Затем я заметил, что один из этих диалогов «Сообщить в Apple» из разбитого процесса Python оставался открытым всю ночь.

Хотя это могло быть просто совпадением, после закрытия диалога процесс distnoted успокоился.

ответил Chris 5 J0000006Europe/Moscow 2014, 21:11:32
0

Я столкнулся с аналогичной проблемой с distnoted несколько месяцев назад и не смог отследить, почему загрузка процессора превышала 100%. Наконец, я добавил запись в мой crontab в killall distnoted каждые 2 минуты, что решило мою проблему.

В последнее время у меня возникла проблема с Sublime Text, где ввод текста subl path/to/file не удалось правильно открыть файл в редакторе Sublime. Перезапуск приложения исправил проблему, но она быстро начала повторяться.

После того, как мой мозг не закончился, я обнаружил, что каждые 2 минуты я убивал процесс distnoted, почему загадочно перестала работать команда subl.

Вывод: сверхвысокое использование ЦП может быть связано с возвышенным. Теперь, когда возвышенность обновилась, надеюсь, что мой вывод верен, загрузка процессора остается низкой, и моя команда subl возвращается к работе, как ожидалось, теперь, когда distnoted работает снова, без моего crontab, убивающего процесс каждые 2 минуты.

ответил finiteloop 1 AMpWed, 01 Apr 2015 10:45:13 +030045Wednesday 2015, 10:45:13
0

У меня тоже была эта проблема, довольно давно, но с перерывами. По-видимому, distnoted является частью iTunes и вызвал проблемы с Windows, а также . Когда я убил iTunes (который играл песню), процесс distonted, который использовал 400% моего процессора (у меня 4 ядра), переставал быть проблемой.

Поэтому мой ответ, пока я не знаю лучше, должен рекомендовать вам убить iTunes, а не distnoted, и сообщить нам, что произойдет.

ответил vy32 28 FebruaryEurope/MoscowbSun, 28 Feb 2016 20:37:00 +0300000000pmSun, 28 Feb 2016 20:37:00 +030016 2016, 20:37:00
-1

Я также вижу, что distnoted go haywire, в моем случае это похоже на fontd. У меня есть три пробега, один для _spotlight, один для _distnote и один для моего пользователя.

distnoted   0,0 6:39,85 2   0   101 _distnote   0 bytes 0 bytes     No      -   No  No  No  0 bytes 0 bytes 64 bit
distnoted   0,0 0,05    2   0   642 _spotlight  0 bytes 0 bytes     Yes     -   No  No  No  0 bytes 0 bytes 64 bit
distnoted   82,1    1:19:38,30  49  1   353 nils    0 bytes 0 bytes     No      -   No  No  No  0 bytes 0 bytes 64 bit

Всякий раз, когда distnoted ест cpu (30-90%), fontworker и fontd потребляют около 30-60% процессора каждый. Как только я удаляю fontd, distnoted и fontworker для моего пользователя успокаиваются. Killing fontworker ничего не делает. Через пару минут, когда fontd перезагрузился и запущен, все начинается снова.

fontworker  27,2    52,81   4   1   1073    nils    0 bytes 0 bytes     No      -   No  No  No  0 bytes 0 bytes 64 bit
fontd   32,6    1:07,41 6   0   1072    nils    0 bytes 0 bytes     No      -   No  No  No  0 bytes 0 bytes 64 bit

Я не знаю, почему это происходит ...

ответил Nils 16 Maypm15 2015, 15:34:01
-2

Питер Бакли прав, я ошибаюсь. Я ненавижу, когда это происходит.

Не удаляйте distnoted, следующая загрузка будет совсем не интересной.

неправильный > Я взял более кувалду
неправильный >
неправильный > sudo mv /usr /sbin /distnoted /usr/bin/distnoted.unwanted
неправильный >
неправильный > Это рабочая машина, и я не заинтересован в синхронизации с iTunes.

ответил ConorR 23 TueEurope/Moscow2014-12-23T02:36:39+03:00Europe/Moscow12bEurope/MoscowTue, 23 Dec 2014 02:36:39 +0300 2014, 02:36:39

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132