DNS resolution takes a long time

最近發現 CI/CD 流程中一直發生異常通知,異常的失敗率達 50%,排查之後發現是 DNS 解析異常導致流程無法順利執行。由於伺服器在內地,所以最後將 DNS 服務器更換成百度的服務器,當下異常問題則排除,後續持續做觀察。

Evergreen Note

Question :: 這篇文章主要在說什麼?

Answer :: 在排除 DNS 解析過慢的問題。這次的問題是阿里雲的 DNS 伺服器很慢甚至沒回應(這邊不討論阿里雲怎麼了,但...),所以要選用好的 DNS 伺服器,我通常是用 Google 的 8.8.8.8,但是在牆內不是一個好的決定,經過一波測試後,最後選擇使用百度雲的 DNS 伺服器。

Note

Log analysis

這兩天一直發生 CI/CD 異常問題時好時壞。發生的太過頻繁近 20 筆資料的錯誤率達(10 error/20 tirgger)50%,覺得可能不是公司內部網路的問題,於是就查看了服務的 log,兩個服務的錯誤原因皆是 DNS 解析異常。

GitLab log 上顯示異常原因為 DNS 解析異常,下面列出一筆 log 資訊。

1curl: (6) Could not resolve host: hooks.slack.com

Harbor log 上顯示異常原因為 DNS 解析異常,下面列出一筆 log 資訊。

12024-04-18T02:50:02Z [ERROR] [/controller/replication/transfer/image/transfer.go:335]::: dial tcp: lookup swr.cn-east-3.myhuaweicloud.com: No address associated with hostname

DNS resolve

預設是使用阿里雲的 DNS 解析服務器 233.5.5.5,看到解析不是超時就是過慢(約莫 1 min)。

1root@infra:~# resolvectl dns eno1
2Link 4 (eno1): 233.5.5.5
3root@infra:~# resolvectl query hooks.slack.com
4hooks.slack.com: resolve call failed: All attempts to contact name servers or networks failed

下意識就更換了 Google 的 DNS 解析服務器 8.8.8.8,解析時間時好時壞(約莫 25.6ms ~ 1 min),也不知道取決於什麼。但是在牆內用 Google DNS 解析可能不是好的選則。

 1root@infra:~# resolvectl dns eno1 8.8.8.8
 2root@infra:~# resolvectl dns eno1
 3Link 4 (eno1): 8.8.8.8
 4root@infra:~# resolvectl query hooks.slack.com
 5hooks.slack.com: 52.192.46.121                 -- link: eno1
 6                 52.196.128.139                -- link: eno1
 7                 35.74.58.174                  -- link: eno1
 8                 35.73.126.78                  -- link: eno1
 9
10-- Information acquired via protocol DNS in 25.6ms.
11-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
12-- Data from: network

下面更換了百度的 DNS 解析服務器 180.76.76.76,效果就好很多,幾乎在 200 ms 內回覆,所以就決定是你了。

 1root@infra:~# resolvectl dns eno1 180.76.76.76
 2root@infra:~# resolvectl dns eno1
 3Link 4 (eno1): 180.76.76.76
 4root@infra:~# resolvectl query hooks.slack.com
 5hooks.slack.com: 35.74.58.174                  -- link: eno1
 6                 35.73.126.78                  -- link: eno1
 7                 52.196.128.139                -- link: eno1
 8                 52.192.46.121                 -- link: eno1
 9
10-- Information acquired via protocol DNS in 11.9ms.
11-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
12-- Data from: cache network
comments powered by Disqus