zoukankan      html  css  js  c++  java
  • 大数据量冲击下Windows网卡异常分析定位

    背景

    mqtt的服务端ActiveMQ在windows上,多台PC机客户端不停地向MQ发送消息。

    现象

    观察MQ自己的日志data/activemq.log里显示,TCP链接皆异常断开。此时尝试从服务端ping其他客户端,发现皆无法ping通。可知服务端网卡必定故障无法正常运作。

    定位思路

    • 原有的组网采用多PC通过hub互联,工作方式上讲hub是广播模式,多PC大数据量发送必然引发广播风暴,使网卡超载运行直至异常
    • 改为百兆交换机后,交换机能够隔离冲突域,数据交互情况明显有所好转。但仍偶现网卡故障的情况。
    • 参考linux的网卡收包理论,通过修改conf/activemq.xml,为Mqtt_Uri加上transport.ioBufferSize=1048576&transport.socketBufferSize=4194304。调整服务端MQ的接收socketBuffer为4M,此后网卡能够保持长期正常运行。说明增加socketBuffer可以减缓网卡往内存塞包的压力,降低网卡丢包又引发重传的恶性循环的可能,但也证明此时网卡的负载能力已濒临临界点
    • 与此同时,观察windows的任务管理器联网这一项下,发现大数据量发送时网络使用率基本持续在100%,证明网卡已近超载的猜想正确。
    • 服务器的网卡本身是千兆网卡,但通过Auto-negotiation降速为了百兆。将百兆交换机更换为千兆交换机,任务管理器里观察到线路速度显示为1Gbps,网络使用率明显未超过10%。此后数据收发长期正常,证明网卡超载运行的情况已经解决。

    参考资料

    集线器、交换机和路由器的区别(详细)

    Diving into the Linux Networking Stack, Part I

    Network Buffers And Memory Management

  • 相关阅读:
    Bridage
    国内项目测试培训笔录和小结
    Proxy
    数据库设计
    PDF转Word
    机务维修成本技术点
    MyEclipse10
    MyEclips:Struts 2 + Hibernate 4 + SQL Server2008
    观察者模式
    javascript事件设计模式
  • 原文地址:https://www.cnblogs.com/lewh/p/6253818.html
Copyright © 2011-2022 走看看