域名访问超时,如何快速甩锅 DNS

 

访问某个 HTTP 域名接口,偶发性超时,原因可能多种多样,比如 DNS 解析问题、网络质量问题、对端服务负载问题等,在客户端没有良好埋点的情况下,排查起来比较费劲,只能挨个方向尝试,这里送大家一个小工具,可以快速采样 DNS 解析延迟,快速确认是否是 DNS 解析问题。

使用演示

运行工具,传入域名,就开始探测,每秒探测一次,如果想控制频率,也可以传入第二个参数,比如 0.2 秒探测一次。

$ ./dns-lookup-latency baidu.com 0.2
Apr  7 09:25:15.414 : 26.060 ms
Apr  7 09:25:15.641 : 3.505 ms
Apr  7 09:25:15.846 : 4.584 ms
Apr  7 09:25:16.051 : 1.515 ms
Apr  7 09:25:16.253 : 6.028 ms
Apr  7 09:25:16.460 : 3.329 ms
Apr  7 09:25:16.665 : 2.943 ms
Apr  7 09:25:16.869 : 3.513 ms
Apr  7 09:25:17.073 : 1.969 ms
Apr  7 09:25:17.276 : 2.194 ms
Apr  7 09:25:17.480 : 2.394 ms
Apr  7 09:25:17.683 : 2.211 ms
Apr  7 09:25:17.886 : 3.497 ms
Apr  7 09:25:18.090 : 3.816 ms
Apr  7 09:25:18.294 : 1.672 ms
Apr  7 09:25:18.496 : 2.913 ms
Apr  7 09:25:18.700 : 2.693 ms
Apr  7 09:25:18.904 : 2.640 ms

冒号前面是时间戳,冒号后面是 DNS 解析延迟时间,单位是毫秒。对于内网域名解析,延迟一般都比较小,如果延迟偶发性变大,那就可以甩锅给 DNS 维护人员了。

工具源码

这个需求比较简单,可以用 shell 实现,不过我是用 go 实现的,代码如下:

https://github.com/UlricQin/dns-lookup-latency

package main

import (
	"fmt"
	"net"
	"os"
	"strconv"
	"time"
)

func main() {
	if len(os.Args) < 2 {
		fmt.Printf("Usage: %s <domain> <interval-seconds>\n", os.Args[0])
		os.Exit(1)
	}

	domain := os.Args[1]

	interval := 1.0
	if len(os.Args) == 3 {
		f, err := strconv.ParseFloat(os.Args[2], 64)
		if err != nil {
			fmt.Printf("failed to parse interval(%s): %v\n", os.Args[2], err)
			os.Exit(1)
		}
		interval = f
	}

	duration := time.Millisecond * time.Duration(interval*1000)

	for {
		resolveDomain(domain)
		time.Sleep(duration)
	}
}

func resolveDomain(domain string) {
	startTime := time.Now()
	_, err := net.LookupIP(domain)
	elapsed := time.Since(startTime)

	if err != nil {
		fmt.Printf("%v : %v\n", startTime.Format(time.StampMilli), err)
		return
	}

	fmt.Printf("%v : %.3f ms\n", startTime.Format(time.StampMilli), elapsed.Seconds()*1000)
}

不到 50 行代码,核心就是一个 net.LookupIP 函数,核心代码还是我向 gpt 咨询的,哈哈。另外,我给大家打包好了二进制文件,可以直接下载使用:

https://github.com/UlricQin/dns-lookup-latency/releases

原创文章,作者:速盾高防cdn,如若转载,请注明出处:https://www.sudun.com/ask/35487.html

(0)
速盾高防cdn's avatar速盾高防cdn
上一篇 2024年4月22日 下午11:08
下一篇 2024年4月22日 下午11:10

相关推荐

  • cdn服务包括,cdn服务的收益

    标题: CDN服务包括 在当今数字化时代,网站速度和性能至关重要。CDN(内容分发网络)是一种关键技术,能够显著提高网站的速度和性能。本文将介绍CDN的基本概念,以及速盾CDN如何…

    2024年5月11日
    0
  • 服务器CDN加速哪些内容

    服务器CDN加速哪些内容 服务器CDN是一种通过在服务器端部署CDN加速技术来提高网站性能和加速内容传输的解决方案。它可以加速各种类型的内容,包括但不限于以下几种: 1. 静态资源…

    2024年3月16日
    0
  • 常见的Web应用程序配置错误及补救措施

    Web 应用程序不断发展,但经常容易出现配置错误,这使得它们容易受到潜在攻击。作为 OWASP 十大漏洞榜单中的第五大漏洞,Web 应用程序安全配置错误构成了普遍存在的威胁。但为什么会出现配置错误?这可能是应用程序设置中微不足道的更改,开发

    CDN资讯 2024年6月19日
    0
  • cdn是什么货币,cdn是啥意思

    在网络世界里,我们经常听到CDN这个词,但你知道它到底是什么货币吗?CDN是一种网络加速技术,全称为内容分发网络。简单来说,它通过将内容分发到全球各地的服务器上,使用户能够更快速地…

    2024年5月11日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注