网络分析技术之葵花宝典
《网络分析技术之葵花宝典》要点: 请及时关注“高效运维(微信ID:greatops)”公众号,并置顶公众号,以免错过各种干货满满的原创文章. 作者介绍:
引言:在游戏运维过程中,我们经常会遇到各种看起来与网络有关的故障.如何快速定位和排除故障,是我们需要面对的挑战. 本文主要分享一些使用网络分析技术tcpdump来解决实际问题的案例,传递网络分析的思想、最佳实践,和大家一起探讨学习. 分享的内容由五部分组成: 1. 背景 2. 案例 3. 技巧 4. 原理 5. 总结 一、背景游戏运维中精彩遇到这些问题:
遇到这些问题,怎么办?
其实,我们可以多做一步:先用常见网络分析技术如tcpdump,判断下问题,然后再决定下一步行动. 二、常见案例说明:如下案例都通过tcpdump抓包并用Wireshark进行分析.关于这两个利器的使用技巧详见后文. 1. 客户端更新失败的分析解决现象:2012年11月1日~11月7日某游戏技术封测,部分玩家更新失败 从这个图里,我们可以看到,玩家下载更新时,被引导到一个非我司的IP地址上.下面我们来看看,在底层的网络层面,发生了什么. 通过上述网络抓包,可以更清晰地看到来龙去脉,并可作为证据留存. 2. 虚拟机带宽形态异常的分析解决在本例中,带宽最小值和最大值都是100Mb/s,这明显是有问题的. 我们抓包看看情况. 由图可见,在TCP的SYN包中,被携带了数据.这说明,该主机对外DOS攻击(原因是什么?各种啊..). 在目前的TCP协议实现中,SYN包中并不携带数据 注意: 有兴趣的同学可以关注下TCP Fast Open技术,在最新的内核中已经支持.这个技术允许在TCP SYN包中携带数据,以减少对端连续建立多个TCP通道的消耗. 3. Nginx 499 异常的分析解决有你,是盛大推出的一款网络短信工具,有类似“朋友圈”的功能. 问题现象:在“有你”这款工具的运营中,发现Nginx日志中存在499状态码的访问,且较多. 499状态码为Nginx特有,意思是“客户端已经关闭连接” 通过分析,我们发现存在2个问题: 1)红色圈中的2个packet,可以看出从NetScaler收到syn包到转发给后端web时间delay达54秒. 2) 黄色圈中的3个packet,可以看出客户端在发了HTTP Request的0.6秒后,立即发送了一个[FIN,ACK]的包. 因此,也可以进行下一步排查了. 4. 手游用户访问异常的分析解决这是该情况下的网络抓包截图. 通过对游戏的网络行为分析,总结如下3点: 1)中国移动对HTTP协议有串联设备分析请求与响应,可能过滤了我们的请求.(后续工作:可以向中国移动某分公司投诉) 2)游戏客户端发送的请求有需要优化的地方:User-Agent头部可以考虑完善补充(构造),对于HTTP协议来说,User-Agent在rfc2616(HTTP标准)中用的是SHOULD(即建议),但是事实上必须的.以下是某款知名手游的HTTP头部截图 3)游戏客户端发送的请求有需要优化的地方:POST请求把所有数据都放在了http header里面,导致post内容本身字段长度为0.这个使得“看起来不是那么正常”.建议尝试优化. 三、技巧大放送1. Wireshark配置技巧1)禁用解析 2)使用绝对序列号 3)自定义HTTP端口号 有时,我们的HTTP应用(以手游为多见)并不是开放在80的知名端口,而是使用了例如10001这样的高端口.为了使Wireshark能够主动以HTTP协议解析这些非知名端口的通信内容,我们需要自定义HTTP解析的端口. 4)使用追踪数据流功能 (编辑:ASP站长网) |