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

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

你好,我是倪朋飞。
上一节,我带你一起学习了网络性能的评估方法。简单回顾一下,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
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Linux 性能优化实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(35)

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

    作者回复: 👍

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

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

    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 再次运行命令,因为使用了缓存,查询时间应该大大缩短。 老师,这种情况也是可以的吧。(针对上一个问题的解释)

    作者回复: 可以的

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

    作者回复: 谢谢补充

    2
    5
  • Lucky Guy
    老师关于 DNS污染 有什么好的解决方案么?

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

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

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

    4
  • 夜空中最亮的星
    会有DNS域名劫持的内容吗?

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

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

    作者回复: 👍谢谢分享

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

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

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

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

    1
收起评论
显示
设置
留言
35
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部