# Mac 上的 mDNSResponder 為什麼占這麼多 CPU

> mDNSResponder 替所有 App 處理 DNS 和 Bonjour，怎麼找到是誰讓它一直忙、怎麼安全地清快取，以及怎麼確認它是真的。

Published: 2026-11-09

mDNSResponder 是 macOS 裡替所有 App 處理 DNS 查詢、並透過 Bonjour 找出區域網路裝置的程序，它是系統正常的一部分，從 `/usr/sbin/mDNSResponder` 啟動，以自己的 `_mdnsresponder` 帳號執行，正常的 Mac 上 CPU 都在 0% 附近。它一直很忙的時候，通常是在替別的東西做事，像是瀏覽器、VPN 或吵雜的網路，所以該做的是找出源頭，而不是把這個程序停掉。

## 它在做什麼

它的手冊頁（`man mDNSResponder`）說這是一個實作 Multicast DNS 和 DNS Service Discovery 的常駐程式，替其他程序送出 DNS 查詢，並把答案快取起來。所以它才會常常出現在活動監視器和網路工具裡：App 要查位址時，實際去問的就是這個程序。

旁邊還有第二個程序 `mDNSResponderHelper`，以 root 執行。本頁使用的這台 Mac 在閒置時兩者長這樣：

```text
_mdnsresponder  0.0% CPU  /usr/sbin/mDNSResponder
root            0.0% CPU  /usr/sbin/mDNSResponderHelper
```

## 找出是誰讓它忙

打開活動監視器，切到 **CPU** 頁籤，盯著 `mDNSResponder` 看一分鐘。短暫的尖峰很正常，如果一直很高，一次只改一個條件：

1. 關掉瀏覽器和會開很多連線的 App，看一分鐘內數字有沒有降下來。
2. 關掉 VPN、代理或 DNS 過濾工具，因為它們會改變每次查詢的走法。
3. 換一個網路，例如手機熱點，如果負載消失，原因就在舊的那個網路上。
4. 想看你的網路上有哪些服務在廣播，執行下面的指令幾秒鐘，再按 `Ctrl + C` 停止：

```bash
dns-sd -B _services._dns-sd._udp local
```

清單很長而且一直在變，代表網路裡有很多 Bonjour 裝置。

| 你看到的 | 可能原因 | 可以試 |
| --- | --- | --- |
| 開瀏覽器或 App 時出現尖峰 | 正常的查詢 | 不用處理 |
| 只有開著 VPN 或代理時 CPU 才高 | 它的 DNS 設定或過濾 | 更新它，或檢查它的 DNS 設定 |
| 只有在某個網路 CPU 才高 | Bonjour 裝置很多或行為異常 | 換個網路測試，再重新啟動路由器或可疑的裝置 |
| 網站打不開或顯示舊位址 | DNS 答案過期或錯誤 | [清除 DNS 快取](https://mole.fit/tw/blog/how-to-flush-dns-cache-mac) |
| 它名下的資料用量很高 | 查詢和本機探索 | 看[哪個 App 在使用我的網路](https://mole.fit/tw/blog/what-app-is-using-my-network-mac) |

## 重新啟動它安全嗎

清除 DNS 快取就是對這個程序送一個訊號，這也是正式支援的清法：

```bash
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
```

這只要一下子，需要輸入密碼。重新啟動 Mac 也有同樣的效果。清快取只能解決錯誤或過期的答案，如果它忙是因為某個 App 一直在查，負載還是會回來。

## 它是惡意軟體嗎

真正的檔案在系統卷宗上的 `/usr/sbin/mDNSResponder`，macOS 從 `/System/Library/LaunchDaemons/com.apple.mDNSResponder.plist` 啟動它。要確認正在跑的是哪一個，可以在活動監視器的檢查視窗看路徑，或執行：

```bash
ps -axo user,pid,args | grep '[m]DNSResponder'
```

如果有同名的程序是從別的資料夾執行，例如你的家目錄或 `/tmp`，就要提高警覺。路徑正確是不錯的佐證，但它不會告訴你是哪個 App 在造成這些查詢。

## 不要這樣做

- 不要想停用它。System Integrity Protection 保護著這個 launch daemon，而且沒有這個程序，整台 Mac 的名稱查詢都會失效。
- 不要用 `kill -9` 取代 `-HUP`。Apple 存檔的支援文章列的是 `-HUP` 這種寫法。
- 不要把資料用量高當成在下載。那些流量是查詢和探索，真正造成它的是其他 App 的活動。
- 不要為了它去裝「網路加速器」或 DNS 清理工具，這兩種都不會告訴你是誰在查。

## Mole 能幫上什麼

它忙的時候，[Mole](https://mole.fit/tw/) 的「狀態」頁會列出 `mDNSResponder` 和它的 CPU、記憶體，不忙的時候用表格的搜尋也找得到。選單裡的「為什麼在執行？」會顯示執行檔和是誰啟動了它。macOS 不允許 Mole 讀取這個系統帳號的連接埠，所以不會出現連接埠清單。它是系統網路服務，Mole 不提供停止它的方式。Mole Mac 不會清除 DNS 快取，也不會更改 DNS 或網路設定，要清請用上面的終端機指令。點選選單列的網路速率打開的「網路」清單也能看到它，可以幫你分辨這是查詢，還是某個 App 真正的流量。

## 常見問題

### Mac 上的 mDNSResponder 是什麼？

它是替 App 做 DNS 查詢，並透過 Bonjour 找出區域網路裝置的系統程序，從 `/usr/sbin/mDNSResponder` 執行。

### mDNSResponder 為什麼占這麼多 CPU？

通常是有東西讓它做了大量的查詢或探索：某個 App、VPN 或 DNS 過濾工具，或是很忙的網路。一次改一個條件，看數字怎麼變。

### 可以結束或停用 mDNSResponder 嗎？

不要停用，整台 Mac 的名稱查詢都靠它。要清掉錯誤的答案，用 `-HUP` 的指令清除 DNS 快取。

### mDNSResponder 是病毒嗎？

真正的那個從 `/usr/sbin` 執行，由系統的 launch daemon 啟動。從其他資料夾執行的同名副本值得仔細檢查。

### mDNSResponder 為什麼要求網路存取或使用資料？

它的工作就是網路查詢和本機探索，所以一直在用網路。它的資料用量反映的是其他 App 的請求，通常很小。

---

Canonical HTML page: https://mole.fit/tw/blog/mdnsresponder-high-cpu-mac
Blog index for agents: https://mole.fit/tw/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
