Hogyan lehet megállítani az mDNSRespondert, hogy ne használjon 90-100% CPU-t folyamatosan és örökké Catalinán?

Most frissítettem a 2018-as 15″ MacBook Pro-m Mojave-ről Catalinára (10.15.4). Már eltelt pár óra.

A frissítés után az egyik első dolog, amit csináltam, egy videó szerkesztése volt a Final Cut Pro X új ingyenes próbaverziójával. A laptopom hűtőventilátorai egész idő alatt teljes sebességgel futottak, de a háttérben mindig zajlott a renderelés, így azt gondoltam, hogy ez normális.

Amikor befejeztem és kiléptem az FCP-ből, a ventilátorok nem pörögtek le, ezért megnéztem az Activity Monitor-t, és felfedeztem, hogy az mDNSResponder folyamatosan 90-100% CPU-t vesz igénybe. Az Activity Monitor Threads oszlopa 3-4 szálat jelez a legtöbbször; a 100% ezek között oszlik meg, és nem mind ugyanazon a magon van. Nem vagyok benne biztos, hogyan képes ezt megtenni, és mégis 100%-on vagy éppen 100% alatt maradni a legtöbbször, de ez az, amit csinál.

screenshot of Activity Monitor

A laptop hat maggal rendelkezik (12 logikai), így az, hogy egy mag teljesen foglalt, nem jelent észrevehető különbséget a teljesítményben (kivéve, ha elkezdem mérni, hogy mennyi ideig tartanak a dolgok — de akkor észreveszem, hogy a számok különböznek – nem pedig, hogy a teljesítmény különbözik!).

Megjegyzés: Az összesítésben az oszlopdiagramokon több mint egy teljes mag van kihasználva. Ez várható volt. Az Activity Monitor képernyőképemen egy keresést alkalmaztam, és rengeteg más dolog is történik — a Slack nyitva van, a Chrome tizenegymilliárd füllel, az IntelliJ IDEA valószínűleg indexel valamit, és így tovább.

Próbáltam újraindítani az mDNSRespondert ezekkel a parancsokkal:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistsudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Néztem, ahogy a folyamat eltűnik, így tudom, hogy a parancs működött, de azonnal visszatért a 100%-os CPU használathoz, amikor újraindítottam. A mDNSResponderHelper nem állt le, ezért újra megpróbáltam, közbenső lépésként beszúrva a sudo killall mDNSResponderHelper-ot. Ettől mindkét folyamat eltűnt a szándékom szerint, de még mindig nem oldotta meg a problémát.

Megpróbáltam HUP jelet küldeni az mDNSRespondernek a következőképpen:

sudo killall -HUP mDNSResponder

Ez szintén nem volt hatással.

Megnyitottam a Console-t, beírtam a mdnsresponder-t a keresőmezőbe, és egy-két percig figyeltem az üzenetek áramlását. Néhány dolog a Bonjourról, sok <private>, és néhány elég normálisnak tűnő DNS-lekérdezés naplózása. Próbáltam kikapcsolni a Bluetooth-t és a Wifi-t is, abban a reményben, hogy ez hatással lesz a Bonjour-ra, de vezetékes Ethernet-kapcsolaton vagyok (amit nem kapcsoltam le), és úgy tűnt, nincs hatása.

Miután ezt beírtam, végül észrevettem, hogy a cloudphotosd is egy egészséges darab CPU-t vesz el. Feltételeztem, hogy ez a hírhedt újraindexelési folyamat, amely gyakran előfordul az operációs rendszer frissítése után, átnézi a (meglehetősen nagy) fotókönyvtáramat, frissíti a metaadatokat a Catalina új funkciói alapján, és feltölti ezeket a változásokat az iCloudba. Ez megmagyarázna némi állandó hálózati tevékenységet, és így azt gondoltam, hogy talán ez magyarázza az mDNSResponder tevékenységét. Ezért nyitva hagytam ezt az ablakot beküldés nélkül, és vártam egy kicsit, hátha a cloudphotosd megnyugszik. Ez megtörtént, de az mDNSResponder nem. Ennyit erről a megérzésről!

Végül megpróbáltam újraindítani a Mac-et; az mDNSResponder nem vesztegette az időt, hogy visszatérjen a munkához. A friss rendszerindítás után nem futott semmilyen alkalmazás, és már következetesen 100%-on vagy éppen 100% alatt volt, akárcsak korábban.

Ez egy Q&A oldal, és én még nem tettem fel kérdést, úgyhogy itt van: hogyan találom ki, mit csinál, és hogyan állíthatom le?

UPDATE: már majdnem 48 óra telt el, és még mindig pörög. Az akkumulátor élettartamát szívás most. Megfigyeltem, hogy a laptop fedelének becsukása úgy tűnik, hogy leállítja, de azonnal visszajön, amikor újra kinyitom. Észrevettem egy további tünetet is: az újraindítás utáni első DNS-keresés ~2 másodpercet vesz igénybe (<200ms-ra számítottam). Nem vagyok benne biztos, hogy ez csak egy mellékhatása annak, hogy az mDNSResponder annyira elfoglalt azzal, amit csinál, vagy ez összefügg az okkal.

UPDATE 2: már több mint három hete. Hozzáadtam egy 100-rep fejpénzt. A DNS-keresési késedelem megnőtt; gyakran 20-30 másodpercig tart, és bár úgy tűnik, hogy van némi gyorsítótárazás, úgy gondolom, hogy időalapú lejárat van rajta, mert a késedelem később újraindítás nélkül is megismétlődik. Örülök, hogy közvetlenül kapcsolatba léphetek valakivel, aki elég jártas a hibakereséshez és a probléma diagnosztizálásához. Az Egyesült Államokban keleti nyári időszámítás szerint vagyok (UTC-4), és általában munkaidőben elérhető vagyok.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.