这个问题太宽泛了,个人觉得没有能力答好,只说说我自己的一些看法。
在进行任何排查前,最重要的事情是要明确故障现象。
现假设我们面临的问题是访问公网上一台 FTP 服务器,下载速度很慢,很卡。(注意:我没有假设故障现象是上网打开网页慢,是因为除了网络可能导致慢以外,还有很大部分原因是浏览器本身、页面加载的某些链接、某些不合理的 js 等太多可能)
我在面对这种问题时,基本都会采用排除法。思路也很简单,将整条访问链路分成多个部分(PC 本身,PC-- 网关,网关 -- 公网出口,公网出口 -- 目标 FTP 服务器)。
一:需要排查 PC 本身的问题,比如 CPU 利用率高、机器本身反应很慢等情况。
二:先进行第一轮排查法,用 ping 初略排查(如果 PC 操作系统是 linux 就更好了,可以用快速 ping,windows 还想安装软件)。
1)ping 网关
2)ping 公司互联网出口(运营商端地址)
3)ping 目标 FTP 服务器
如果以上能发现丢包异常、网络时延过大、网络时延抖动大,就以此为基础逐段细分排查。(少数情况下,会出现 ping 目标服务器不丢包,但 ping 运营商中途地址丢包。这时更应该关注对最终目标服务器的 ping 结果,可采用快速 ping,大包 ping 的方式来验证到最终服务器的通信质量,尝试多次仍然不丢包,可忽略运营商中途的丢包情况)
如果以上没有发现异常,就采用快速 ping,打包 ping 来进一步检查所有环节。
三:如果经过上面两步,还没有发现任何问题的迹象。
如果条件允许的话,我会选择一个容易操作的环节上抓包,可以在 PC 上、也可以在交换上,也可以在出口路由器上。
如果条件不允许的话,我就会登陆到数据路径上的交换机、路由器逐级检查接口状态和流量情况。看是否能发现流量过大、广播包涨的过快、接口上有 error、接口上有 drop 等。
如果还是没有发现异常,我会尝试换一台 PC 来测试。
如果新 PC 仍然出现访问 FTP 慢或下载慢的情况,那我就必须通过抓包来判断故障。
四:进入抓包排障环节
如何好好利用抓包工具就是很重要的问题了,假设采用 wireshark 抓包。
抓包排障绝大部分时候,其实都只有看是否有丢包。
1)首先看看是否存在大量丢包
2)如果丢包不多,可以利用 wireshark 统计流量图形,看看是否存在规律的波峰波谷,或较平坦稳定的流量图像,可能通信环节或最终 FTP 服务器有带宽限制。
3)如果还没有发现特别异常,就需要对抓包数据的特征进行分析。比如通信的数据包都很小,比如所有数据包基本都是一来一回交替传输等等,到了这里很大可能就是和对方 FTP 服务器 TCP 协议栈、或者是 FTP 客户端和 FTP 服务器的兼容性问题了。可以换一个不同 FTP 客户端软件,或另外一个不同的操作系统版本来测试
以上所有都来自与假设,实际中的故障或者简单,或者复杂,具体情况还需具体分析。总思路就是排查法,逐段排查。