[TOC]
简介
出现玩家反馈无法连接服务器,如何去排查问题。
自查服务器情况
1、在本地对服务器进行ping操作,ping发送icmp包,查看网络质量。
2、使用外部工具 http://port.ping.pe/ 和 https://www.ipip.net/ ,工具会在各个不同地区对服务器进行ping和连接测试网络情况。
3、使用 telnet 确认,telnet工作在传输层可以确认服务端端口的连通性。
4、通过 netstat 确认服务器开放端口情况。
5、检查服务器防火墙iptables,云供应商的安全组,确认是否因为防火墙将端口drop掉。
1、对服务器进行ping
确认自己网络与服务器连接链路网络质量是否存在问题,对目标服务器发送20次icmp包,查看结果。
ping -c 20 域名
1、不带包头的包大小和带包头的包大小。
2、icmp_seq:ping序列,从1开始; ttl:剩余的ttl; time: 响应时间,数值越小,连通速度越快。
3、发出去的包数,返回的包数,丢包率,耗费时间。
4、最小/平均/最大响应时间和本机硬件耗费时间。
2、使用外部工具进行各个地区访问
使用 http://port.ping.pe/ 对服务器+端口一个连通性测试,此工具会通过不同地区对服务器进行连接测试,判断服务器是否存在问题。
使用 https://www.ipip.net/ ,此工具会通过不同地区对服务器进行ping测试,判断服务器是否存在问题。
3、telnet确认服务端端口连通性
4、使用netstat确认服务器端口开放情况
5、查看防火墙和安全组
前端排查
- 1、在本地对服务器进行ping操作,ping发送icmp包,查看网络质量。
- 2、在本地对服务器进行mtr操作,查看网络链路中的质量。这里最好双向确认,即源访问目标和目标访问源的双向使用mtr确认。
- 3、对服务器进行 traceroute 操作,查看本地网络到服务器经过的链路,如果我们做了mtr,就没必要做 traceroute 了。
1、对服务器进行ping
确认玩家网络与服务器连接链路网络质量是否存在问题,对目标服务器发送20次icmp包,查看结果。
ping -c 20 域名
2、对服务器进行mtr
MTR(My traceroute)是几乎所有Linux发行版本预装的网络测试工具,此工具也有对应的Windows版本,名称为WinMTR。 MTR工具将ping和traceroute命令的功能并入了同一个工具中,实现更强大的功能。
Linux版本的mtr命令默认发送ICMP数据包进行链路探测。可以通过“-u”参数来指定使用UDP数据包用于探测。
相对于traceroute命令只会做一次链路跟踪测试,mtr命令会对链路上的相关节点做持续探测并给出相应的统计信息。所以,mtr命令能避免节点波动对测试结果的影响,所以其测试结果更正确
Loss%:丢包率。
Snt:发送数据包数。
Last:最后一次发送延迟。毫秒
Avg:平均延迟。
Best:最快一次延迟。
Wrst:最慢一次延迟。
StDev:离散,标准偏差。
如果丢包开始于前三跳,一般为本地运营商网络问题,建议检查访问其他网址是否存在相同情况。
如果丢包发生在接近目的服务器的几跳,则可能为目的服务器运营商的网络问题。
针对出现运营商网络问题,收集好信息提交工单给到云供应商,让云供应商协助去跟运营商解决问题。
3、对服务器进行traceroute
通过traceroute我们可以知道从本地到服务器经过了哪些链路。这与mtr功能相似,但mtr集成了ping和traceroute两个功能。
[root@iZwz912lc29uqcsrbsm694Z ~]# traceroute 47.115.8.36
traceroute to 47.115.8.36 (47.115.8.36), 30 hops max, 60 byte packets
1 10.12.36.18 (10.12.36.18) 1.910 ms 10.12.44.18 (10.12.44.18) 1.659 ms 10.12.40.18 (10.12.40.18) 1.646 ms
2 10.12.32.81 (10.12.32.81) 2.135 ms * *
3 10.12.24.86 (10.12.24.86) 2.146 ms * 2.080 ms
4 47.115.8.36 (47.115.8.36) 3.068 ms 3.138 ms 3.456 ms
记录按序列号从1开始,每个纪录就是一跳,每跳表示一个网关,每行有三个时间,单位是 ms,探测数据包向每个网关发送三个数据包后,网关响应后返回的时间。
mtr场景网络异常问题
目标主机网络配置不当
[root@mycentos6 ~]# mtr —no-dns www.google.com
My traceroute [v0.75]
mycentos6.6 (0.0.0.0) Wed Jun 15 19:06:29 2016
Keys: Help Display mode Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. ???
2. ???
3. 1XX.X.X.X 0.0% 10 521.3 90.1 2.7 521.3 211.3
4. 11X.X.X.X 0.0% 10 2.9 4.7 1.6 10.6 3.9
5. 2X.X.X.X 80.0% 10 3.0 3.0 3.0 3.0 0.0
6. 2X.XX.XX.XX 0.0% 10 1.7 7.2 1.6 34.9 13.6
7. 1XX.1XX.XX.X 0.0% 10 5.2 5.2 5.1 5.2 0.0
8. 2XX.XX.XX.XX 0.0% 10 5.3 5.2 5.1 5.3 0.1
9. 173.194.200.105 100.0% 10 0.0 0.0 0.0 0.0 0.0
数据包在目标地址出现了100%的丢包。从数据上看是数据包没有到达,其实很有可能是目标服务器相关安全策略(比如防火墙、iptables 等)禁用了ICMP所致,导致目的主机无法发送任何应答。所以,该场景需要排查目标服务器的安全策略配置。
ICMP限速
[root@mycentos6 ~]# mtr --no-dns www.google.com
My traceroute [v0.75]
mycentos6.6 (0.0.0.0) Wed Jun 15 19:06:29 2016
Keys: Help Display mode Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 63.247.X.X 0.0% 10 0.3 0.6 0.3 1.2 0.3
2. 63.247.X.XX 0.0% 10 0.4 1.0 0.4 6.1 1.8
3. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.7
4. aix.pr1.atl.google.com 0.0% 10 6.7 6.8 6.7 6.9 0.1
5. 72.14.233.56 60.0% 10 27.2 25.3 23.1 26.4 2.9
6. 209.85.254.247 0.0% 10 39.1 39.4 39.1 39.7 0.2
7. 64.233.174.46 0.0% 10 39.6 40.4 39.4 46.9 2.3
8. gw-in-f147.1e100.net 0.0% 10 39.6 40.5 39.5 46.7 2.2
在该示例中,在第5跳出现了明显的丢包,但后续节点均未见异常。所以推断是该节点ICMP限速所致。该场景对最终客户端到目标服务器的数据传输不会有影响,所以,分析的时候可以忽略。
环路
[root@mycentos6 ~]# mtr —no-dns www.google.com
My traceroute [v0.75]
mycentos6.6 (0.0.0.0) Wed Jun 15 19:06:29 2016
Keys: Help Display mode Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 63.247.7X.X 0.0% 10 0.3 0.6 0.3 1.2 0.3
2. 63.247.6X.X 0.0% 10 0.4 1.0 0.4 6.1 1.8
3. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.7
4. aix.pr1.atl.google.com 0.0% 10 6.7 6.8 6.7 6.9 0.1
5. 72.14.233.56 0.0% 10 0.0 0.0 0.0 0.0 0.0
6. 72.14.233.57 0.0% 10 0.0 0.0 0.0 0.0 0.0
7. 72.14.233.56 0.0% 10 0.0 0.0 0.0 0.0 0.0
8. 72.14.233.57 0.0% 10 0.0 0.0 0.0 0.0 0.0
9 ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0
在该示例中,数据包在第5跳之后56和78出现了循环跳转,导致最终无法到达目标服务器。这通常是由于运营商相关节点路由配置异常所致。所以,该场景需要联系相应节点归属运营商处理。
链路中断
root@mycentos6 ~]# mtr —no-dns www.google.com
My traceroute [v0.75]
mycentos6.6 (0.0.0.0) Wed Jun 15 19:06:29 2016
Keys: Help Display mode Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 63.247.7X.X 0.0% 10 0.3 0.6 0.3 1.2 0.3
2. 63.247.6X.X 0.0% 10 0.4 1.0 0.4 6.1 1.8
3. 209.51.130.213 0.0% 10 0.8 2.7 0.8 19.0 5.7
4. aix.pr1.atl.google.com 0.0% 10 6.7 6.8 6.7 6.9 0.1
5. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0
6. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0
7. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0
8. ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0
9 ??? 0.0% 10 0.0 0.0 0.0 0.0 0.0
在该示例中,数据包在第4跳之后就无法收到任何反馈。这通常是由于相应节点中断所致。建议结合反向链路测试做进一步确认。该场景需要联系相应节点归属运营商处理。
移动端测试工具
苹果iphone测试工具
前往appstore下载 iNetTools
对服务器进行Ping,启动后等待20秒,将Ping结果分享出来。
对服务器进行路由轨迹,它就是traceroute,将结果分享出来。
安卓android测试工具
前往google play下载 PingTools Network Utilities
。
或者使用浏览器打开google play,然后搜索 PingTools Network Utilities,获取到浏览器地址,然后打开 https://apps.evozi.com/apk-downloader 填入地址进行下来apk包。
或者直接使用已下载好的apk包:下载地址
对服务器进行Ping,点击右上角进行设置 Ping计数20,填入服务器地址,最后将Ping结果分享出来。
对服务器进行路由跟踪,它就是traceroute,点击右上角设置 ping次数3, 填入服务器地址,最后将路由跟踪结果分享出来。
游戏玩家反馈无法连接游戏排查
1、对服务器进行自查,使用以上文档步骤,排查服务器是否存在问题。
2、使用自己本地网络进行连接服务器排查。
3、引导玩家使用浏览器访问地址 ip138.com ,截图拿到玩家的ip地址信息,将结果发给技术。
4、根据是安卓还是苹果,引导玩家下载网络监测包,进行ping和traceroute操作,并将结果发给技术进行排查。