題:
失控的分散過程
ryan
2013-11-20 07:59:05 UTC
view on stackexchange narkive permalink

有時候,我看到一個 disnotted 進程突然啟動,消耗了100%CPU(在一個內核上)和大量內存,通常在1.5G左右。從一個月左右開始,這種情況每天發生幾次。

命令行是 / usr / sbin / distnoted agent ,由 launchd ,兩者都無濟於事。它通常會運行4到24小時,然後再旋轉並釘住CPU。

網絡搜索顯示 distnoted 可以管理通知傳遞,很多其他人都報告了相同的問題它,但是我還沒有找到解決方法。有人發現關閉惡意軟件應用程序(例如Skype)會阻止它,但我尚未在我的計算機上找到惡意軟件。我通常只運行一些應用程序:Emacs(來自Homebrew的24.2),Firefox,Adium和Dash。

我正在2012年末使用Mavericks的13“ Retina MBP。 / p>

更新:

我通過觸摸 / var / log /來打開 distnoted 登錄系統日誌do_dnserver_log ,但是它並沒有太大幫助,我看到像這樣的行(uid 501是我,還沒有找到89):

  distnoted [80011]:# distnote服務器代理絕對時間:48754.144787848民事時間:2013年11月20日星期三10:52:03 pid:80011 uid:501根:nodistnoted [20]:#distnote服務器守護程序絕對時間:2.808112262民事時間:11月19日星期二09:52: 24 2013 pid:20 uid:0根:yesdistnoted [444]:#distnote服務器代理絕對時間:16.656997509民事時間:Tue Nov 19 09:52:38 2013 pid:444 uid:501根:nodistnoted [1271]:#distnote服務器代理絕對時間:52.518265717民事時間:週二11月19日09:53:14 2013 pid:1271 uid:89根:nodistnoted [689]:中斷n-現在退出。 

我還對一個快速啟動的 distnoted 進程運行了 sudo dtruss -p PID ,它像這樣彈出行:

  kevent64(0x3,0x7FFF7C3FD130,0x1)= 1 0
workq_kernreturn(0x20,0x0,0x1)= 0 0workq_kernreturn(0x20,0x0,0x1)= 0 0kevent64(0x3,0x7FFF7C3FD130,0x1)= 1 0workq_kernreturn(0x20,0x0,0x1)0 0(0x20) 0kevent64(0x3,0x7FFF7C3FD130,0x1)= 1 0workq_kernreturn(0x20,0x0,0x1)= 0 0__disable_threadsignal(0x1,0x0,0x0)= 0 0__disable_threadsignal(0x1,0x0,0x0_0)= 0 0 0kevent64(0x3,0x7FFF7C3FD130,0x1)= 1 0workq_kernreturn(0x20,0x0,0x1)= 0 0 ...  
只是在這裡釣魚,但無論如何,你們都在運行[flux](http://justgetflux.com)嗎?對我來說,它們似乎是相關的。如果我在emacs變得狂躁時退出流量,那麼emacs要么崩潰要么恢復正常。我不確定這是fl幸(僅發生過兩次),但是如果每個人都在運行它,可能會有一些問題。
我沒有助焊劑,但也許其他人正在助焊劑。
aquamacs導致這個過程對我不利。
我遇到了一個非常相似的問題(可能是相同的問題),而我的問題在10.9.4 OS更新中消失了。
今天注意到這一點。罪魁禍首是OS X(10.9)Google雲端硬盤應用(1.17.7290.4094)。我第一次看到這個。
我在探路者7.1.1(1672)中遇到了同樣的問題,每次我打開時都使用70 ti 100%CPU,當我退出應用程序時它停止。任何的想法 ?
剛發生在10.11.3。沒有emacs,但是我正在運行f.lux。
您在運行iTunes嗎?
現在我在10.11.3上發生過幾次。我一直沒有運行iTunes,也沒有從外部訪問本機的iTunes庫(例如,Apple TV)。實際上,“此”比OP的描述更嚴重,因為它使我的機器屈服於400%的CPU,需要按住電源按鈕才能關閉機器。我以為它可能已連接到郵件或日曆,但是上次發生時,它們都沒有運行。上一次,我僅運行Terminal,Mathematica,CrashPlan,Chrome和Acrobat Pro。哦,當然是Finder。
我只是有同樣的事情。在我看來,這是由於Time Machine嘗試將備份開始到忙於執行其他操作的聯網Time Machine備份捲而引起的。無論如何,它肯定與發生的事情可重合。
奇怪的是,這也使我的熱角停止工作(這是出現問題的第一個線索)。但解決問題後,熱角仍然不起作用
有人在運行Fujitsu的ScanSnap軟件嗎?只是想弄清楚是什麼對我造成了...
我正在使用Fujitsu ScanSnap,但我看不到有證據表明會導致此問題。我曾經在登錄,編輯郵件,提交Safari表單以及在Time Machine備份(否則係統處於空閒狀態)期間發生過這種情況。我在下面發布了我的解決方案(監視並殺死CPU)。
我也是,通常無法將Mac從睡眠中喚醒,不得不從筆記本電腦切換到我的iMac,並且“ killall -quit distnoted”,立即一切正常,而且很顯然,當通宵通知彈出時,它已經被佔用了一段時間。 運行f.lux,決定從現在開始不使用它,然後再看,它在冬天還是有用的,希望它在秋天成為新OS的一部分。
只是有同樣的問題,如果有任何區別,我正在運行Flux。
Dash只是對我這樣做。不知道為什麼它崩潰了。
嗯,似乎在3年後問題仍然存在。
十四 答案:
Don Tillman
2013-11-24 11:21:26 UTC
view on stackexchange narkive permalink

我也看到了這一點。我發現Emacs 24.3.1,Mavericks 10.9是這樣。 http://permalink.gmane.org/gmane.emacs.bugs/80836

也可以在Emacs v23.4.1中看到。
同樣在這裡。沒想到這是由Emacs引起的!謝謝
對我來說,我一直遇到相反的問題-Emacs開始使用所有CPU,並且殺死用戶的分散指令可以暫時解決問題。在這種情況下,查看Emacs進程,我看到很多線程-非Emacs起源的線程-都在com.apple.root.default-overcommit-priority隊列/互斥體上等待(運行lldb,“進程附加--pid ”,然後單擊“全部線程回溯”以查看全部內容)
這是關於所有這些線程實際上是什麼的有趣讀物:http://newosxbook.com/articles/GCD.html(我的被打死的人可能是“魔術羽毛”,而不是使它恢復正常的東西)
在OS X 10.11.3上的Emacs v24.5中也可以看到
Temikus
2013-11-22 20:00:28 UTC
view on stackexchange narkive permalink

OP的摘要:這是調試的絕佳工具。它最初使我指向Spotlight重新索引文件系統,但是我縮小了它允許索引的範圍,但仍然看到了問題。我最終建立了一個cron工作來殺死經常發散的人。


您可以通過創建文件 / var / log / do_dnserver_log 進行分佈式調試,這將導致 CFNotificationCenter 服務器( distnoted )以將有關所有通知的信息記錄到系統日誌中。

我將從那裡開始,重新啟動,並在CPU出現峰值時查看系統日誌。

有關 CFNotificationCenter 調試的更多信息,請參見官方開發人員文檔,網址為:技術說明TN2124> CFNotificationCenter

謝謝!好電話,我現在已經做到了。我沒有在`/ var / log / system.log`中看到任何分散的條目,但是自從我開始記錄以來,它也沒有啟動。手指交叉。
我現在看到分散的日誌行,但是它們並不太有用。嘆。例如:`Nov 23 07:56:15 hell.local distnoted [2644]:#distnote服務器代理絕對時間:77.445654904民事時間:Sat Nov 23 07:56:15 2013 pid:2644 uid:89 root:no`
嘗試將DTrace腳本附加到該進程,並查看其實際作用,從sudo dtruss -p PID開始,查看該進程實際嘗試執行的系統調用,以及是否有任何失敗的調用(狀態不為0)。
另外,您的系統上的UID 89是什麼?通知中的UID是否更改? pid 2644是否對應於distnoted或其他進程?
感謝您的想法!我對`strace`很熟悉,但是我對`dtruss`不了解。下次我一定會嘗試的。 pids只是對應的分散進程,而唯一的uid是me和我不太了解的內置系統用戶_appserveradm`。
再次感謝,@Temikus。我添加了`dtruss`輸出。同樣,我收回了,uid 89不是`_appserveradm`。我實際上根本沒有在`id`的輸出中看到它。我會繼續搜索,但是您知道我應該尋找的其他地方嗎?
啊。在Mac OS X上,我要`dscl。 -list / Users UniqueID,而不是id。原來uid 89是`_spotlight`,這是一個很好的線索。也許這只是後台的聚光燈索引?
可能。我將關閉索引一兩天,然後查看事件是否再次出現。如果不是,我將嘗試考慮如何進一步調試它。
同意,會做。
我統治了Spotlight的索引設置,似乎這已經停止了。手指交叉。感謝您的調試幫助!
很高興聽到,歡呼!
@Temikus`syscall :: bsdthread_ctl:return`和`syscall :: workq_kernreturn:return`都顯示錯誤#5 DIF偏移量為0時,無效的用戶訪問。
同樣,如果我將HUP發送到有問題的進程,則似乎另一個進程開始佔用CPU,而`dtruss`對此也顯示相同的錯誤。在殺死distnot之後,我開始注意到opendirectory佔用了CPU並輸出了這些錯誤,而在殺死它之後,WindowServer開始執行相同的操作。
id 89應該顯示用戶ID為89的帳戶以及其他信息。
創建`/ var / log / do_dnserver_log`仍然可以在10.13(High Sierra)中使用嗎?我在使用大量CPU時遇到了問題。我以root身份觸摸`/ var / log / do_dnserver_log`,chmod 666將其重新啟動。我仍然沒有寫入任何日誌消息。
user68323
2014-01-23 04:49:57 UTC
view on stackexchange narkive permalink

我知道我參加聚會要晚了,但這是特定於小牛上可可emacs的內存洩漏,該洩漏已固定在後備箱中。現在有一個補丁可以用來僅通過修復來構建emacs 24.3。

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


我更新了Mac OS X的Emacs的夜間版本(三月),但仍然有問題。如果我為R或Clojure(編程語言)創建交互式會話,則似乎會發生這種情況。分散的進程將緩慢爬升到GB RAM,並在我退出Emacs時立即釋放它。
@mattrepl提到的相同問題。
自製軟件似乎已集成了此補丁程序。因此,`brew reinstall emacs --cocoa --with-gnutls`可能也解決了這個問題。它也應該在24.4中修復,但是尚未達到穩定狀態。
剛剛在Emacs 24.5中遇到了這個問題(修復程序應該在24.4中)..在我的情況下,Emacs顯示出旋轉的球並且發散了將近400%的CPU(每個“ top”),殺死-9個emacs並不是工作正常,但是在殺死-HUP之後,emacs對殺死做出了響應。
Michael Rourke
2016-04-11 05:02:09 UTC
view on stackexchange narkive permalink

一段時間以來,我在El Capitan上遇到 distnoted 的相同問題。我的解決方案並不像定期殺死它那樣苛刻,而是我檢查它是否失控(CPU使用率很高),然後殺死它。我使用以下腳本:

 #!/ bin / sh
#
#檢查有無逃跑的人,必要時殺死
#
路徑= / bin:/ usr / bin
導出路徑

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

腳本每分鐘從cron運行一次,並在crontab中顯示以下行:

  * * * * * sh“ $ HOME / bin / checkdistnoted”
 

實際上,該腳本每天一次或兩次殺死被殺死的 ,通常是在 backupd 啟動之後發生的。

對於不習慣使用OS X Shell(命令行)的用戶,以下腳本將同時安裝 checkdistnoted 腳本和crontab條目:

 #!/ bin / sh
#
#安裝$ HOME / bin / checkdistnoted
#設置crontab每分鐘運行一次
#
#MWR 2016年4月
#

INSTALLCMD = bin / checkdistnoted
cd“ $ HOME”
[! -d bin] && mkdir bin
[-f $ INSTALLCMD] || {
    貓> $ INSTALLCMD <<-“ !!”
    #!/ bin / sh
    #
    #檢查有無逃跑的人,必要時殺死
    #

    路徑= / bin:/ usr / bin
    導出路徑

    ps -reo'%cpu,uid,pid,command'| |
        awk -v UID = $ UID'
        / distnoted agent $ / && $ 1 > = 100.0 && $ 2 == UID {
            #使用> = 100%CPU殺死分散的代理並歸我所有
            系統(“ kill -9” $ 3)
        }
        '
!!
    chmod + x $安裝目錄
    迴聲安裝$ INSTALLCMD
}

INSTALLCRON =“#每分鐘檢查一次失控的逃逸:
* * * * * sh \“ \ $ HOME / $ INSTALLCMD \”“
crontab -l | grep -q'$ HOME'/ $ INSTALLCMD || {
    crontab -l > mycron
迴聲“ $ INSTALLCRON” >> mycron
    crontab邁克龍
    RM Mycron
    回顯更新的crontab
}
 

您需要在桌面上將以上內容另存為 install_checkdistnoted.sh ,然後運行 Applications / Utilities / Terminal 並輸入:

  cd桌面
sh install_checkdistnoted.sh
 

如果它完全起作用,它將打印每個步驟的確認。該腳本不會覆蓋現有的 checkdistnoted 腳本或crontab條目。

謝謝!很棒的解決方案,可以讓我保持警惕,但是在失去控制時將其關閉。對於像我這樣可能對Unixy做事方式不熟悉的其他人:1)。您的主文件夾將沒有bin目錄,請在您的用戶名下創建一個bin文件夾,並將腳本作為一個名為“ checkdisnoted”的文本文件放在該文件夾中。2)。要創建cron條目,請在終端中運行“ crontab -e”,按“ i”鍵進入插入模式,並用星號粘貼整行,然後按“ esc”以返回命令模式,然後輸入“:wq”保存文件並退出編輯器。
@Michael Rourke:這是一個很好的解決方案。但是,安裝腳本在Mac的內置bash“ GNU bash,版本3.2.57(1)-發行版(x86_64-apple-darwin15)”下包含語法錯誤。“ ||”邏輯快捷鍵和“ <<-”在這裡似乎不起作用。
@kakyo-非常抱歉,腳本失敗,因為製表符變為空格-現在已修復。
ryan
2013-12-18 13:42:18 UTC
view on stackexchange narkive permalink

我放棄了,採取了大錘的方法:每分鐘自動將其殺死。

我把它放在〜/ 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> <  - !每一分鐘-->< / dict>< / plist>  

,然後使用 launchctl load〜/ Library / LaunchAgents / org.snarfed.pkill_distnoted.plist 進行安裝。

邁克爾·羅克(Michael Rourke)的以下方法是一種輕巧的清潔劑,因為它只有在開始吃cpu時才會被忽略。
@mike,但Michael Rourke的方法無法處理“未發現”吞噬RAM的情況。
@Cœur-是。我還沒有遇到不注意吃RAM的問題。這是您所看到的一個問題嗎?
@mike是的,“被告知”昨天在我的High Sierra上吃了63 GB的RAM。在他的問題中,甚至賴安(ryan)都說該過程正在消耗大量的內存。
@Cœur-好點!我投票給他們。
Lang Martin
2013-12-12 21:33:23 UTC
view on stackexchange narkive permalink

我一直在進行剝離定制的不同組合,以縮小這種行為;我認為這是通勤模式。從Homebrew(或來自emacsforosx)使用emacs 24.3.1的10.9上,打開一個shell模式緩衝區會發生明顯的+ emacs洩漏(它們兩者的內存消耗都緩慢增加)。

只想在這裡註意它,gmane似乎就不好了,我在每週兩次尋找該問題的後續活動中一直在尋找這種討論。

謝謝!我可能實際上看到的是同一件事。我以為毫無節制的聚光燈(可接受的答案)對我有用,但畢竟我仍然看到失控的聲音。再次感謝帶頭,我可能會繼續這樣做並進行更多調試。
我相信這也是處理我的Emacs流程的問題。我殺死Emacs之後,立刻就平靜下來了。我有server.el,edit-server.el和一個python shell一直在運行以進行記錄。
看到同一件事!埃馬克斯要怪!
我什至不知道什麼是comint模式,而且有時會遇到來自emacs的明顯問題。因此,也許沒有什麼具體的方案值得指責。
xApple
2016-06-28 01:31:15 UTC
view on stackexchange narkive permalink

當應用程序以某種方式錯誤地使用了macOS提供的通知API時,似乎會發生這種情況。就我而言,罪魁禍首是iTerm2。退出後, distnoted 進程退出。其他被發現的罪魁禍首是Emacs和iTunes。

iTerm2也對我造成了影響。
petednz - fuzion
2015-04-29 11:22:50 UTC
view on stackexchange narkive permalink

我想我只記得2次出現混亂的情況。在這種情況下,其中有2位坐在CPU排行榜的首位,而其中一位超過400%。回到辦公室並插入幾個外接顯示器(其中一個是USB供電)後不久發生的,我猜測這可能是相關的。在拉出USB顯示屏(立即恢復正常狀態)之前,我沒有做任何其他嘗試來解決問題。然後將其重新插入不會造成重複問題。

哪個證明了?不知道!

我插入了數百次,這是我第一次想到它可能與之相關。而且由於並非每次我插入它們時都會發生,因此這可能與彼此過快插入它們或與之類似的隨機性有關。無論如何,我想分享一下,以防其他人發現它與插入外圍設備有關(如果那是外部屏幕的話)

我也有類似的情況。當我拔出USB顯示適配器時,發現它不再消耗過多的CPU(根據“頂部”),並且當我將其重新插入時,問題沒有立即出現。
原來這也是我的問題。謝謝!
David P. Caldwell
2013-12-31 02:16:59 UTC
view on stackexchange narkive permalink

對於它的價值,我可以通過禁用防病毒軟件來解決此問題。

Chris
2014-06-05 22:11:32 UTC
view on stackexchange narkive permalink

這也發生在我身上,發瘋了。關閉一堆應用程序後,沒有任何幫助。

然後我注意到一個崩潰的Python進程中的“向蘋果報告”對話框中的一個對話框整夜都處於打開狀態。

儘管這可能只是巧合,但關閉對話框後,分散的過程平靜下來。

finiteloop
2015-04-01 12:45:14 UTC
view on stackexchange narkive permalink

幾個月前,我遇到了一個類似的問題,並且無法追查為什麼CPU使用率飆升至100%以上。最後,我每隔2分鐘在crontab中添加一個條目,以 killall distnoted 解決了我的問題。

最近,我遇到了Sublime Text的問題,其中鍵入 subl path / to / file 無法在Sublime編輯器中正確打開文件。重新啟動該應用程序解決了該問題,但很快又開始發生。

結論:超高的CPU使用率可能與崇高有關。現在,崇高狀態已更新,希望我的結論是正確的,CPU使用率仍然很低,並且既然distnoted重新運行,而我的crontab每2分鐘不會殺死該進程,那麼我的subl命令恢復了預期的工作。

vy32
2016-02-28 23:37:01 UTC
view on stackexchange narkive permalink

我也有這個問題,已經有一段時間了,但斷斷續續。顯然是iTunes的一部分,並且在Windows上也引起了問題。當我殺死iTunes(正在播放歌曲)時,正在使用我400%的CPU(我有4個內核)的 distonted 進程不再是問題。

所以,直到我進一步了解為止,我的建議是建議您殺死iTunes,而不是 disnoted ,並讓我們知道會發生什麼情況。

Nils
2015-05-16 17:34:02 UTC
view on stackexchange narkive permalink

我還看到雜亂無章的雜草叢生,就我而言,這似乎與字體有關。我運行了3個被打擾的,一個用於_spotlight,一個給_distnote,一個給我的用戶。

 被打擾的0,0 6:39,85 2 0 101 _distnote 0個字節0個字節否-否否否0字節0字節64位已分配0,0 0,05 2 0642 _spotlight 0字節0字節是-否否否0字節0字節64位已分配82,1 1:19:38,30 49 1 353 nils 0字節0字節否-否否否0字節0字節64位 

每當被區分吃掉cpu(30-90%)時,fontworker和fontd各自吃掉30-60%cpu。一旦我殺死字體用戶,字體用戶就平靜下來了。殺死fontworker沒有任何作用。幾分鐘後,當fontd重新啟動並運行了一段時間後,它又重新開始。

  fontworker 27,2 52,81 4 1 1073 nils 0字節0字節否-否否否0字節0字節64位 
 字型32,6 1:07,41 6 0 1072零0字節0字節否-否否否0字節0字節64位 

我不知道為什麼會這樣……

ConorR
2014-12-23 05:36:39 UTC
view on stackexchange narkive permalink

彼得·巴克利(Peter Buckley)是對的,我錯了。我討厭這種情況發生。 / usr / sbin / distnoted /usr/bin/distnoted.unwantedwrong> wrong>這是一台工作機,我對與iTunes同步沒有興趣。

瘋了正如[Apple關於Disnoted的頁面](https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man8/distnoted.8.html)中所述,distnoted是OS X的一部分,涉及交易至少從2005年開始就使用分佈式通知。
無論做什麼,都不要像ConorR所述移動“ distnoted”(後來改正了,謝謝!),這需要引導OSX(在我的情況下為10.9.5)。
儘管這並不是一個真正的答案,但我認為重要的是要在頁面上的某處註明這一點。我幾乎考慮過嘗試偏離方向。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...