Linux 性能优化实战
倪朋飞
资深 Linux 专家,Kubernetes 项目维护者
87257 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 65 讲
结束语 (1讲)
Linux 性能优化实战
15
15
1.0x
00:00/00:00
登录|注册

37 | 案例篇:DNS 解析时快时慢,我该怎么办?

排查和解决方法
碰到的 DNS 问题
基于 DNS 的全局负载均衡(GSLB)
HTTPDNS
预取
缓存
DNS 缓存
解决方法:更换 DNS 服务器
DNS 服务器延迟问题
解决方法:配置 DNS 服务器
容器内 DNS 服务器配置问题
dig
nslookup
DNS 协议
域名解析的过程
域名的结构
思考
DNS 优化方法
案例2:DNS解析不稳定
案例1:DNS解析失败
预先安装 docker
机器配置
DNS 解析工具
域名与 DNS 解析
小结
案例分析
案例准备
DNS 解析
DNS 解析问题分析与解决

该思维导图由 AI 生成,仅供参考

你好,我是倪朋飞。
上一节,我带你一起学习了网络性能的评估方法。简单回顾一下,Linux 网络基于 TCP/IP 协议栈构建,而在协议栈的不同层,我们所关注的网络性能也不尽相同。
在应用层,我们关注的是应用程序的并发连接数、每秒请求数、处理延迟、错误数等,可以使用 wrk、JMeter 等工具,模拟用户的负载,得到想要的测试结果。
而在传输层,我们关注的是 TCP、UDP 等传输层协议的工作状况,比如 TCP 连接数、 TCP 重传、TCP 错误数等。此时,你可以使用 iperf、netperf 等,来测试 TCP 或 UDP 的性能。
再向下到网络层,我们关注的则是网络包的处理能力,即 PPS。Linux 内核自带的 pktgen,就可以帮你测试这个指标。
由于低层协议是高层协议的基础,所以一般情况下,我们所说的网络优化,实际上包含了整个网络协议栈的所有层的优化。当然,性能要求不同,具体需要优化的位置和目标并不完全相同。
前面在评估网络性能(比如 HTTP 性能)时,我们在测试工具中指定了网络服务的 IP 地址。IP 地址是 TCP/IP 协议中,用来确定通信双方的一个重要标识。每个 IP 地址又包括了主机号和网络号两部分。相同网络号的主机组成一个子网;不同子网再通过路由器连接,组成一个庞大的网络。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了DNS解析的基本原理和工作过程,以及如何分析和排查DNS出现问题的情况。通过讲解域名与DNS解析的基本概念,以及DNS服务的重要性和作用,读者可以快速了解DNS解析的重要性。文章还介绍了DNS协议的工作原理和常见的DNS记录类型,以及如何配置系统的DNS服务器。此外,还介绍了常用的DNS解析工具nslookup和dig,以及如何使用dig的trace功能来展示递归查询的整个过程。通过实际案例分析,读者可以了解如何定位和解决DNS解析出现问题的情况。整体而言,本文内容丰富,深入浅出,适合对DNS解析感兴趣的读者阅读。 文章还总结了几种常见的DNS优化方法,包括对DNS解析结果进行缓存、预取、使用HTTPDNS取代常规DNS解析以及基于DNS的全局负载均衡(GSLB)。这些方法可以帮助读者在应用程序开发过程中考虑DNS解析可能带来的性能问题,并掌握常见的优化方法。 最后,文章提出了思考问题,邀请读者分享他们所碰到的DNS问题类型以及排查和解决方法,以促进交流和进步。 总的来说,本文内容丰富,涵盖了DNS解析的基本原理、优化方法以及实际案例分析,适合技术人员快速了解DNS解析的重要性和解决问题的思路。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Linux 性能优化实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(36)

  • 最新
  • 精选
  • 分清云淡
    nslookup 域名结果正确,但是 ping 域名 返回 unknown host, 让我挖出一大把相关的基础知识,一下子就把dns这块通关了:https://plantegg.github.io/2019/01/09/nslookup-OK-but-ping-fail/

    作者回复: 👍

    2019-03-01
    9
    43
  • ninuxer
    打卡day39 碰到dns问题最多的就是劫持,现在公网都是强制https,内部用powerdns,性能刚刚的~

    作者回复: 赞,也谢谢分享经验

    2019-02-21
    19
  • MJ
    centos 7 dnsmasq如下操作: cat /etc/resolv.conf nameserver 114.114.114.114 yum -y install dnsmasq systemctl start dnsmasq 测试dns缓存,要测试查询速度,请访问一个 dnsmasq 启动后没有访问过的网站,执行: [root@node ~]# dig archlinux.org | grep "Query time" ;; Query time: 212 msec [root@node ~]# dig archlinux.org | grep "Query time" ;; Query time: 2 msec 再次运行命令,因为使用了缓存,查询时间应该大大缩短。 老师,这种情况也是可以的吧。(针对上一个问题的解释)

    作者回复: 可以的

    2019-03-06
    14
  • Lucky Guy
    老师关于 DNS污染 有什么好的解决方案么?

    作者回复: 一般是考虑尽可能自主控制DNS解析,比如使用专用DNS服务器,HTTPDNS,甚至是直接使用IP地址跳过解析

    2019-07-26
    2
    7
  • JJj
    你好,请问下dns缓存dnsmasq的配置里面是否还要设置DNS服务器地址,比如8.8.8.8或114.114.114.114

    作者回复: 嗯嗯,实际使用时要设置 upstream DNS 服务器

    2019-07-13
    6
  • 慢热怪友
    既然域名以分层的结构进行管理,相对应的,域名解析其实也是用递归的方式(从顶级开始,以此类推),发送给每个层级的域名服务器,直到得到解析结果。 这里描述不恰当,老师漏讲了递归查询和迭代查询: (1)递归查询 递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。所以,一般情况下服务器跟内网DNS 或直接 dns 之间都采用递归查询。 (2)迭代查询 DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果。所以一般内网 dns 和外网 dns 之间的都采用迭代查询。

    作者回复: 谢谢补充

    2020-08-05
    2
    5
  • 夜空中最亮的星
    会有DNS域名劫持的内容吗?

    作者回复: 没有展开讲,这儿提了一点劫持的解决方法

    2019-02-15
    4
  • bruceding
    遇到过 GO client 解析 dns 的问题,也是做了折中,配置 /etc/resolv.conf 多个 name server 解决,GO DNS 解析流程可以参考: http://blog.bruceding.com/516.html

    作者回复: 👍谢谢分享

    2019-02-20
    3
  • 潘政宇
    ping一个IP的时候,140ms就算延迟很大了,一般多少毫秒算正常?

    作者回复: 取决于实际业务,通常几十毫秒以下。再大了,我们都可以直观感受到这个延迟了

    2019-02-21
    2
  • 还需要故意,linux,ping过程域名解析,还有一个方向解析过程,内网解析器,目前使用coredns做内网的域名解析器的时候,使用etcd插件时候需要配置方向解析配置,否则ping时候,会把反向解析发送外网上游dns,出现超时,

    作者回复: 嗯嗯,很多域名都没有配反向解析

    2019-02-17
    2
收起评论
显示
设置
留言
36
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部