Perché mDNSResponder usa così tanta CPU sul mio Mac
mDNSResponder è il processo di macOS che risponde alle richieste DNS di tutte le app e trova i dispositivi della rete locale tramite Bonjour. Fa parte del sistema, parte da /usr/sbin/mDNSResponder con il proprio account _mdnsresponder e su un Mac in buona salute resta vicino allo 0% di CPU. Quando rimane occupato, di solito lavora per qualcos'altro, come un browser, una VPN o una rete rumorosa, quindi la soluzione è trovare quell'origine invece di fermare il processo.
Cosa fa
La sua pagina di manuale (man mDNSResponder) descrive un daemon che implementa Multicast DNS e DNS Service Discovery, esegue query DNS per conto di altri processi e tiene una cache delle risposte. Per questo il nome compare così spesso in Monitoraggio Attività e negli strumenti di rete: quando un'app chiede un indirizzo, a chiederlo è questo processo.
Un secondo processo, mDNSResponderHelper, gira come root al suo fianco. Sul Mac usato per questa pagina, a riposo i due si presentavano così:
_mdnsresponder 0.0% CPU /usr/sbin/mDNSResponder
root 0.0% CPU /usr/sbin/mDNSResponderHelper
Trova cosa lo sta spingendo
Apri Monitoraggio Attività, vai alla scheda CPU e osserva mDNSResponder per un minuto. Un picco breve è normale. Se resta alto, cambia una cosa alla volta:
- Chiudi i browser e le app che aprono molte connessioni e controlla se il valore scende entro un minuto.
- Disattiva eventuali VPN, proxy o filtri DNS, perché cambiano il percorso di ogni richiesta.
- Collegati a un'altra rete, per esempio l'hotspot del telefono. Se il carico sparisce, la causa è nella rete precedente.
- Per vedere cosa annuncia la tua rete, esegui questo comando per qualche secondo e premi
Ctrl + Cper fermarlo:
dns-sd -B _services._dns-sd._udp local
Un elenco lungo e in continuo cambiamento indica una rete con molti dispositivi Bonjour.
| Cosa vedi | Causa probabile | Prova |
|---|---|---|
| Un picco quando apri un browser o un'app | Normali richieste DNS | Niente |
| CPU alta solo con una VPN o un proxy attivi | Le sue impostazioni DNS o il filtro | Aggiornala, oppure controlla le sue impostazioni DNS |
| CPU alta solo su una rete | Molti dispositivi Bonjour, o che si comportano male | Prova un'altra rete, poi riavvia il router o il dispositivo sospetto |
| I siti non si aprono o mostrano indirizzi vecchi | Una risposta DNS obsoleta o errata | Svuota la cache DNS |
| Molti dati usati a nome suo | Richieste DNS e rilevamento locale | Vedi quale app sta usando la mia rete |
È sicuro riavviarlo
Svuotare la cache DNS invia un segnale al processo, ed è il modo supportato per azzerarla:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Ci vuole un attimo e serve la tua password. Anche un riavvio del Mac fa lo stesso lavoro. Svuotare la cache aiuta solo con risposte errate o obsolete, quindi se il processo è occupato perché un'app continua a fare richieste, il carico torna.
È un malware
Il file vero si trova in /usr/sbin/mDNSResponder, sul volume di sistema, e macOS lo avvia da /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist. Per controllare cosa sta girando, guarda il percorso nell'ispettore di Monitoraggio Attività oppure esegui:
ps -axo user,pid,args | grep '[m]DNSResponder'
Diffida di un processo con questo nome che parte da un'altra cartella, come la tua cartella home o /tmp. Un percorso corretto è una buona prova, ma non dice quale app stia causando le richieste.
Cosa non fare
- Non provare a disattivarlo. La protezione dell'integrità del sistema difende quel launch daemon e, senza questo processo, la risoluzione dei nomi su tutto il Mac smette di funzionare.
- Non usare
kill -9al posto di-HUP. La forma-HUPè quella indicata dall'articolo di supporto archiviato di Apple. - Non scambiare l'alto uso di dati per un download. Il traffico è fatto di richieste DNS e rilevamento, ed è l'attività delle altre app a causarlo.
- Non installare un "acceleratore di rete" o un pulitore DNS per questo motivo. Nessuno dei due ti dice chi sta facendo le richieste.
Il ruolo di Mole
Mole elenca mDNSResponder in Stato con CPU e memoria quando è occupato, e la ricerca della tabella lo trova anche quando non lo è. Perché è in esecuzione? nel suo menu mostra l'eseguibile e cosa lo ha avviato. macOS non permette a Mole di leggere le porte di questo account di sistema, quindi non compare nessun elenco di porte. Dato che è un servizio di rete di sistema, Mole non offre modo di fermarlo. Mole per Mac non svuota la cache DNS e non cambia le impostazioni DNS o di rete, quindi per questo usa il comando da Terminale qui sopra. Anche l'elenco Rete per app, che si apre facendo clic sulle velocità di rete nella barra dei menu, può mostrarlo, e ti aiuta a distinguere le richieste DNS dal traffico vero di un'app.
Domande frequenti
Cos'è mDNSResponder su Mac?
È il processo di sistema che esegue le richieste DNS per le app e trova i dispositivi della rete locale tramite Bonjour. Parte da /usr/sbin/mDNSResponder.
Perché mDNSResponder usa così tanta CPU?
Di solito qualcosa gli fa eseguire molte richieste o molto rilevamento: un'app, una VPN o un filtro DNS, oppure una rete molto attiva. Cambia questi elementi uno alla volta e osserva il valore.
Posso chiudere o disattivare mDNSResponder?
Non disattivarlo. La risoluzione dei nomi di tutto il Mac dipende da lui. Per eliminare risposte errate, svuota la cache DNS con il comando -HUP.
mDNSResponder è un virus?
Quello vero parte da /usr/sbin e viene avviato da un launch daemon di sistema. Una copia che parte da qualsiasi altra cartella merita un controllo più attento.
Perché mDNSResponder chiede l'accesso alla rete o consuma dati?
Il suo compito sono le richieste di rete e il rilevamento locale, quindi usa la rete di continuo. Il valore dei dati riflette quello che chiedono le altre app ed è normalmente piccolo.