奇怪的VM高网络接收吞吐量问题查找

简介:

问题

我们的虚拟环境是Hyper-V ,一次在SCVMM上优化了一个VM的动态内存设置后,把SCVMM的视图调整了一下,加了一些性能参数列。在我按照网络吞吐量进行排序时发现,一个很普通的VM的接收吞吐量在TOP1,当时只是觉得可能是瞬间的流量,没有太在意。后面看了几次都在TOP5 之内,觉得问题可能不正常。
奇怪的VM高网络接收吞吐量问题查找

排错步骤

  • VM不太好登录上去看,但是在Hyper-V环境,我们有更好的方法可以进行抓包。那就是Hyper-v网络的高级功能,PORT Mirroring。(大概步骤就是你把VM的网卡设置为镜像的Source,然后在另外一个专门抓包的VM的网卡上设置镜像的Dest),然后你就可以抓Source 的数据包了。参考这个文章配置Hyper-v Network Port Mirroring.

  • 我们的专门抓取数据包的是个centos 7的VM ,这是一个含有工具箱的机器,可以在多个机器上漂移,用来排错,在设置了Port Mirroring后,我们这个VM的第二个网卡上设置成promisc,然后抓了一小段时间的数据包。

    ifconfig eth1 promisc
    tcpdump -i eth1 -w client4.cap
    

揭开真相

  • 拖下来cap包用wireshark进行分析,先对协议进行统计,有个dcerpc的协议占用了75%左右的流量。

奇怪的VM高网络接收吞吐量问题查找

奇怪的VM高网络接收吞吐量问题查找

高峰大概在4Mb/s 了,平均2.5Mb/s 左右,那么如果仔细计算下,60秒就是1分钟的数据量大概就是150Mb,那么10分钟就是1.5Gb,有点吓人,比备份系统的流量都高。

wireshark 对DCE/RPC的解释在这里,而且DCE/RPC的数据主要是和AD的Domain Controller进行交互,就我们内部的应用来看这个很像是使用DCOM访问的数据。

  • 登录到VM本地看看,发现有个深信服的ADSSO应用在这里运行,应该就是它了。看看深信服ADSSO的介绍。

奇怪的VM高网络接收吞吐量问题查找

  • 然后本地还有ADSSO的日志,我们看到大量的warning,肯定无疑这个应用的问题了。

最后总结

  • 没有头绪时需要一步步缩小范围才能定位到问题实质,这个问题我们只能找到问题点,虽然自己没有办法解决,但已经确定到一个非常小的点了,下一步看厂商怎么解决。曾经想反编译下应用代码,看看到底是什么逻辑,这效率太低了。后面发现代码是VC写的,反编译到代码比较麻烦

本文转自 yoke88 51CTO博客,原文链接:http://blog.51cto.com/yoke88/2055575
相关文章
|
6月前
|
Python
143 python网络编程 - UDP发送、接收数据
143 python网络编程 - UDP发送、接收数据
43 0
|
4月前
|
网络协议
网络编程-UDP协议(发送数据和接收数据)
网络编程-UDP协议(发送数据和接收数据)
|
2月前
|
监控 Shell Linux
【Shell 命令集合 网络通讯 】Linux 发送和接收传真 efax命令 使用指南
【Shell 命令集合 网络通讯 】Linux 发送和接收传真 efax命令 使用指南
43 0
|
6月前
|
存储 监控 Cloud Native
剖析Linux网络包接收过程:掌握数据如何被捕获和分发的全过程(上)
剖析Linux网络包接收过程:掌握数据如何被捕获和分发的全过程
|
2月前
|
关系型数据库 MySQL Linux
【VMware安装+centos 7Linux系统+MySQL安装】——在Linux系统中安装MySQL步骤,以及遇见的各种问题(如:vm两个虚拟网卡消失、vm网络适配器有感叹号等等)
【VMware安装+centos 7Linux系统+MySQL安装】——在Linux系统中安装MySQL步骤,以及遇见的各种问题(如:vm两个虚拟网卡消失、vm网络适配器有感叹号等等)
197 0
|
3月前
|
存储 网络协议 数据中心
|
3月前
|
机器学习/深度学习 存储 设计模式
架构设计新范式!RevCol:可逆的多 column 网络式,已被ICLR 2023接收
架构设计新范式!RevCol:可逆的多 column 网络式,已被ICLR 2023接收
30 0
|
4月前
Socket网络编程练习题二:客户端发送一条数据,接收服务端反馈的消息并打印;服务端接收数据并打印,再给客户端反馈消息
Socket网络编程练习题二:客户端发送一条数据,接收服务端反馈的消息并打印;服务端接收数据并打印,再给客户端反馈消息
|
4月前
Socket网络编程练习题一:客户端多次发送数据,服务端多次接收数据并打印
Socket网络编程练习题一:客户端多次发送数据,服务端多次接收数据并打印
|
4月前
|
API Python
Python 的网络编程:如何使用 Python 发送和接收 HTTP 请求?
Python 的网络编程:如何使用 Python 发送和接收 HTTP 请求?