processus distancié emballé


116

Parfois, je vois un distnotedprocessus se mettre en marche soudainement et gruger 100% de l’UC (sur un cœur) et une tonne de mémoire, souvent au voisinage de 1,5 G environ. Cela se produit plusieurs fois par jour, il y a environ un mois.

La ligne de commande est /usr/sbin/distnoted agent, et elle est lancée par launchd, aucune de ces aides n’est très utile. Il fonctionne généralement entre 4h et 24h avant de tourner et de bloquer le processeur.

Selon les recherches sur le Web distnoted, la livraison des notifications est gérée, et de nombreuses autres personnes signalent le même problème, mais je n’ai pas encore trouvé de solution. Certaines personnes trouvent que la fermeture d'une application coupable (par exemple, Skype) l'arrête, mais je n'ai pas encore trouvé de coupable sur ma machine. En général, je ne lance que quelques applications: Emacs (24.2 de Homebrew), Firefox, Adium et Dash.

Je suis sur Mavericks pour un Retin MBP de 13 "à la fin de 2012. Merci d'avance!

Mise à jour:

J'ai activé la distnotedconnexion au journal système en touchant /var/log/do_dnserver_log, mais cela n'aide pas beaucoup. Je vois des lignes comme celles-ci (uid 501, c’est moi, 89 ans, je n’ai pas encore trouvé):

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.

J'ai également eu recours sudo dtruss -p PIDà un distnotedprocessus accéléré, et il crache des lignes comme celle-ci:

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

Je viens de pêcher ici, mais à chaque changement, utilisez-vous tous un flux ? Pour moi, ils semblent être liés. Si je quitte Flux lorsque emacs devient fou, emacs se bloque ou revient à la normale. Je ne sais pas s'il s'agit d'un coup de chance (cela ne s'est produit que deux fois), mais si tout le monde le gère, il y a peut-être quelque chose qui ne va pas.

Je ne suis pas en cours d'exécution flux, mais peut-être d'autres le sont.
ryan

aquaemacs provoque ce processus sur moi.
marathon

J'ai eu un problème très similaire (probablement le même problème) et mon problème est parti avec la mise à jour du système d'exploitation 10.9.4.
Chris Quenelle

Remarqué cela aujourd'hui. Le coupable était l'application Google Drive pour OS X (10.9) (1.17.7290.4094). La première fois que j'ai vu ça.
jordanpg

Réponses:


24

Résumé de l’opération : C’était un excellent outil de débogage. À l'origine, il m'indiquait que Spotlight réindexait le système de fichiers, mais j'ai réduit le nombre de choses qu'il est autorisé à indexer et j'ai toujours vu le problème. J'ai fini par configurer un travail cron pour tuer régulièrement Distnote. Voir la réponse plus bas.


Vous pouvez déboguer distnoted en créant le fichier. /var/log/do_dnserver_log Cela force le CFNotificationCenterserveur ( distnoted) à enregistrer des informations sur toutes les notifications dans le journal système.

Je voudrais commencer par là, redémarrer et regarder le journal du système lorsque le processeur monte en puissance. Cela devrait facilement sortir du coupable.

Plus d'informations sur le CFNotificationCenterdébogage sont disponibles dans la documentation officielle pour les développeurs ici: Note technique TN2124> CFNotificationCenter


Merci! bon appel, je l'ai maintenant fait. Je ne vois aucune entrée distnoted dans /var/log/system.log, mais il n'a pas non plus filé depuis que j'ai commencé la journalisation. doigts croisés.
Ryan

Je vois des lignes de journal distnoted maintenant, mais elles ne sont pas trop utiles. soupir. exemple:Nov 23 07:56:15 hell.local distnoted[2644]: # distnote server agent absolute time: 77.445654904 civil time: Sat Nov 23 07:56:15 2013 pid: 2644 uid: 89 root: no
ryan

Essayez d’attacher le script DTrace à ce processus et de voir ce qu’il fait réellement, commencez sudo dtruss -p PIDet voyez quels appels système le processus essaie réellement de faire et s’il ya des échecs (l’état n’est pas à 0).
Temikus

En outre, quel est l'UID 89 sur votre système? L'UID dans les notifications change-t-il? Le pid 2644 correspond-il à distnoted ou à un autre processus?
Temikus

merci pour les idées! Je connais strace, mais je ne savais pas dtruss. Je vais certainement essayer la prochaine fois. les pids ne sont que le processus correspondant, et les seuls uids sont moi et _appserveradmun utilisateur système intégré dont je ne connais pas grand chose.
Ryan

33

J'ai vu ça aussi. Emacs 24.3.1, Mavericks 10.9.

J'ai constaté que le processus de distribution s'arrêtait quelques secondes après mon départ d'Emacs.

J'ai déposé un bogue Emacs ici: http://permalink.gmane.org/gmane.emacs.bugs/80836


2
Aussi vu avec Emacs v23.4.1.
WilliamKF

1
Pareil ici. Jamais imaginé que cela avait été causé par Emacs! Merci
Lionel Henry

1
Pour moi, le problème est inverse: Emacs commence à utiliser tous les processeurs, et supprimer le distnoted de mon utilisateur efface temporairement le problème. Dans ce cas, en regardant le processus Emacs, je vois beaucoup de threads - ceux qui ne sont pas d'origine Emacs - tous en attente de la file d'attente / mutex com.apple.root.default-oversommit-priority (run lldb, "process attach --pid <pid> ", puis"
enfilez

et cela est une lecture intéressante sur ce que tous ces fils sont en fait: newosxbook.com/articles/GCD.html (mon meurtre distnoted pourrait être une « plume magique », et non la chose qu'il ramène à la normale)
JRG

Aussi vu avec Emacs v24.5 sur OS X 10.11.3
Michael

23

Je sais que je suis en retard à la fête, mais il s'agit d'une fuite de mémoire spécifique à Cocoa emacs sur Mavericks qui est corrigée dans le coffre. Pour le moment, il existe un correctif que vous pouvez utiliser pour compiler emacs 24.3 uniquement avec le correctif.

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



1
J'ai mis à jour une version nocturne d'Emacs pour Mac OS X (en mars) et le problème persiste. Cela semble arriver si je crée une session interactive pour R ou Clojure (langages de programmation). Le processus distnoted augmentera lentement jusqu'à Go de RAM et le libérera dès que je quitterai Emacs.
mattrepl

Même problème que @mattrepl a mentionné.
Amelio Vazquez-Reina

1
Homebrew semble avoir intégré ce correctif. Alors brew reinstall emacs --cocoa --with-gnutlspeut résoudre le problème aussi. Il devrait également être corrigé dans la version 24.4, mais cela n’a pas encore été stable.
mblakele

Je viens de rencontrer ce problème avec Emacs 24.5 (le correctif devait être dans 24.4) .. dans mon cas, Emacs montrait la balle en rotation et Distnoted prenait près de 400% du processeur (par top) et tuer -9 emacs ne fonctionnait pas, mais après avoir tué -HUP, Emacs désapprouvé a répondu à la mise à mort.
Michael

17

J'ai les mêmes problèmes avec distnotedEl Capitan depuis quelque temps. Ma solution n'est pas aussi dure que de la tuer régulièrement, mais plutôt de vérifier si elle devient incontrôlable (utilisation intensive du processeur), puis de la tuer. J'utilise ce script:

#!/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) 
    }
    '

Le script est exécuté depuis cron toutes les minutes avec cette ligne dans crontab:

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

En pratique, le script tue distnotedune ou deux fois par jour, généralement après le backupddémarrage.

Pour ceux qui ne maîtrisent pas le shell OS X (ligne de commande), le script suivant installe à la fois le checkdistnotedscript et l'entrée 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
}

Vous devez enregistrer ce qui précède install_checkdistnoted.shsur votre bureau, puis exécuter Applications/Utilities/Terminalet saisir:

cd Desktop
sh install_checkdistnoted.sh 

Si cela fonctionne pleinement, la confirmation de chacune des étapes sera imprimée. Le script ne remplacera pas un checkdistnotedscript existant ou une entrée de crontab.


2
MERCI! Solution géniale qui me permet de rester discret, mais de l'arrêter quand il devient incontrôlable. Pour d'autres personnes comme moi qui ne sont peut-être pas familiarisées avec la manière de faire Unixy: 1). votre dossier de départ n'aura pas de répertoire bin, créez un dossier bin sous votre nom d'utilisateur et insérez le script dans un fichier texte nommé "checkdisnoted". 2) Pour créer l'entrée cron, exécutez "crontab -e" dans le terminal, appuyez sur la touche "i" pour entrer en mode insertion, collez toute la ligne avec les astérisques, puis appuyez sur "esc" pour revenir en mode commande, puis entrez ": wq" pour enregistrer le fichier et quitter l'éditeur.
Mike

@Michael Rourke: C'est une excellente solution. Cependant, le script d'installation contient des erreurs de syntaxe sous le bash intégré à mon Mac "GNU bash, version 3.2.57 (1) -release (x86_64-apple-darwin15)". Le "||" raccourci logique et "<< -" ne semblent pas fonctionner ici.
Kakyo

@kakyo - très désolé, le script a échoué car un onglet est devenu un espace - corrigé maintenant.
Michael Rourke

8

J'ai abandonné et pris l'approche sledgehammer: tuez-le automatiquement, chaque minute. soupir.

je mets ceci dans ~/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>

et ensuite installé avec launchctl load ~/Library/LaunchAgents/org.snarfed.pkill_distnoted.plist.


1
L'approche de Michael Rourke ci-dessous est un nettoyant tactile, car elle ne tue que lorsque vous commencez à manger du CPU.
Mike

@Mike mais Michael Rourke approche ne traite pas les cas où disnotedest en train de manger RAM.
Cœur

@ Cœur - Oui. Je n'ai pas eu de problème avec la consommation de RAM déshéritée. Est-ce un problème que vous avez vu?
Mike le

1
@ Mike oui, disnotedmangeait 63 Go de RAM sur mon High Sierra hier. Même Ryan, dans sa question, affirme que le processus a été une perte de mémoire .
Cœur

@ Cœur - bon point! Je les ai votés.
Mike

4

J'ai eu recours à différentes combinaisons de personnalisation pour supprimer ce comportement. Je pense que c'est le mode comint. Sur 10.9 avec emacs 24.3.1 de homebrew (ou d’emacsforosx), la fuite distnoted + emacs (la consommation de mémoire augmente lentement) se produira avec un tampon en mode shell ouvert. Ce ne sera pas si vous ne visitez que des fichiers.

Je voulais juste le noter ici, gmane semble être en panne et je continue à trouver cette discussion lors de ma recherche bimensuelle de suivis de cette question.


Merci! je pourrais effectivement voir la même chose. Je pensais que la neutralisation sous les projecteurs (la réponse acceptée) avait fonctionné pour moi, mais je continue de voir des circonscriptions fugaces après tout. merci encore pour l'avance, je peux suivre ceci et déboguer plus aussi.
Ryan

Je crois que c'est quelque chose à faire avec mon processus Emacs aussi. distnoted s'est calmé juste après avoir tué Emacs. J'ai les fichiers server.el, edit-server.el et un shell Python qui s'exécute à tout moment pour l'enregistrement.
Lester Cheung

Voir la même chose! Emacs à blâmer!
Justingordon

Je ne sais même pas ce qu'est le mode comint et j'ai parfois le problème de distnoted d'Emacs. Alors peut-être qu'aucun paquet spécifique n'est à blâmer.
huyz

2

Je pense que je ne me souviens que de 2 occasions où distnoted est devenu fâcheux. À cette occasion, 2 d'entre eux se trouvaient au sommet de la liste des processeurs et l'un d'entre eux dépassait 400%. C'est arrivé peu de temps après être rentré au bureau et avoir branché deux écrans externes - dont l'un est alimenté par USB - j'ai supposé que cela pouvait être lié. Je n'ai rien fait d'autre pour essayer de résoudre le problème avant de retirer l'écran USB, ce qui a ramené la santé mentale instantanément. Et puis le rebrancher n'a abouti à aucun problème de répétition.

Ce qui prouve quoi? Aucune idée!

Je les branche des centaines de fois et c'est la première fois que je pensais que cela pouvait être lié. Et comme cela ne se produit pas à chaque fois que je les branche, cela pourrait alors avoir quelque chose à voir avec les connecter tous les deux trop rapidement l'un à la suite de l'autre, ou quelque chose de ce genre au hasard. Je pensais de toute façon que je partagerais au cas où d’autres personnes trouvent que cela a quelque chose à voir avec le branchement de périphériques (s’il s’agit d’un écran externe)


J'ai eu une situation similaire. Lorsque je débranchais mon adaptateur d’affichage USB Distnoted arrêtait de consommer une quantité excessive de CPU (selon "haut"), et lorsque je le rebranchais, le problème ne réapparaissait pas immédiatement.
Dalbergia

Cela s'est avéré être le problème pour moi aussi. Je vous remercie!
Eric Simonton

2

Cela semble se produire lorsqu'une application utilise de manière erronée l'API de notification fournie par macOS. Dans mon cas, le coupable était iTerm2. Après l'avoir quitté, les distnotedprocessus sont sortis. Les autres coupables identifiés sont Emacs et iTunes.


1
iTerm2 en est la cause pour moi également.
ctc

0

Pour ce que cela vaut, j'ai pu résoudre ce problème en désactivant mon logiciel anti-virus.


0

Cela m'est arrivé aussi, Distnote devenait fou. Après la fermeture d'un tas d'applications, rien n'a aidé.

Ensuite, j'ai remarqué qu'une des boîtes de dialogue «Signaler à Apple» d'un processus Python bloqué était restée ouverte toute la nuit.

Bien que cela puisse être une simple coïncidence, après la fermeture du dialogue, le processus de distribution a été calmé.


0

J'ai rencontré un problème similaire avec distnote il y a quelques mois et je ne pouvais pas savoir pourquoi l'utilisation du processeur dépassait 100%. Enfin, j'ai ajouté une entrée à ma crontab killall distnotedtoutes les 2 minutes, ce qui a résolu mon problème.

Récemment, je rencontrais un problème avec Sublime Text où la saisie subl path/to/filene permettait pas d'ouvrir correctement le fichier dans l'éditeur Sublime. Un redémarrage de l'application a résolu le problème, mais cela a rapidement recommencé.

Après avoir déchiré mon cerveau sans fin, j'ai identifié le fait que je tuais un processus distnoted toutes les 2 minutes pour expliquer pourquoi la sous-commande avait mystérieusement cessé de fonctionner.

La conclusion: l’utilisation très élevée du processeur a peut-être été liée au sublime. Maintenant que sublime a été mis à jour, j'espère que ma conclusion est correcte, l'utilisation du processeur reste faible et que ma commande sublime fonctionne comme prévu maintenant que distnoted s'exécute à nouveau sans que ma crontab ne tue le processus toutes les 2 minutes.


0

J'ai aussi ce problème depuis assez longtemps, mais par intermittence. Apparemment, distnoted fait partie d'iTunes et a également causé des problèmes sous Windows . Lorsque j'ai tué iTunes (qui jouait une chanson), le distontedprocessus utilisant 400% de mon processeur (j'ai 4 cœurs) a cessé d'être un problème.

Donc, ma réponse, jusqu'à ce que je sache mieux, est de vous recommander de tuer iTunes et non de distnotednous laisser savoir ce qui se passe.


-1

Je vois aussi distnoted aller en foin, dans mon cas, il semble lié à fontd. J'ai trois programmes en cours d'exécution, un pour _spotlight, un pour _distnote et un pour mon utilisateur.

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

Chaque fois que distnoted mange cpu (30-90%), fontworker et fontd mangent environ 30-60% cpu chacun. Dès que je tue fontd, distnoted et fontworker, mon utilisateur se calme. Tuer Fontworker ne fait rien. Après quelques minutes, lorsque fontd a redémarré et fonctionne depuis un moment, tout recommence.

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

Je ne sais pas pourquoi cela se produit…


-2

Peter Buckley a raison, je me trompe. Je déteste quand ça arrive.

Ne supprimez pas distnoted, le prochain démarrage ne sera pas amusant du tout.

faux> j'ai adopté une approche plus agressive
faux> 
faux> sudo mv / usr / sbin / distnoted /usr/bin/distnoted.unwanted
faux>
faux> Ceci est une machine de travail et je n'ai aucun intérêt à synchroniser avec iTunes.


C'est fou. Comme indiqué dans la page d'Apple sur distnoted , distnoted fait partie d'OS X et traite des notifications distribuées depuis au moins 2005.
jfmercer

Quoi que vous fassiez, ne vous déplacez pas distnotedcomme ConorR l'a mentionné (et corrigé plus tard, merci!), Il est nécessaire de démarrer OSX (10.9.5 dans mon cas).
Peter Buckley

Bien que cela ne soit pas vraiment une réponse, je pense qu'il est important que cela reste noté quelque part sur la page. J'ai presque envisagé d'essayer de me déplacer.
Zenexer
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.