资讯专栏INFORMATION COLUMN

一块偷懒的网卡导致的服务器负载异常

calx / 2208人阅读

摘要:原文链接最近因服务部署,上线了一批物理机做,上线后发现我们有个机房的其中一台机器负载比较闲,网卡流入流出也相比其他机器低一截,于是准备看看到底是什么情况。

原文链接:http://tabalt.net/blog/a-lazy-network-card-leads-to-server-load-imbalance/

最近因服务部署https,上线了一批物理机做Proxy,上线后发现我们有个机房的其中一台机器负载比较闲,网卡流入流出也相比其他机器低一截,于是准备看看到底是什么情况。

首先对比着看了下Nginx的/server-status页面,问题机器的Nginx的活跃连接数要高出很多。

curl http://127.0.0.1/server-status

#问题机器
Active connections: 4353 
server accepts handled requests
 33401902 33401902 37655622 
Reading: 0 Writing: 85 Waiting: 4231 

#正常机器
Active connections: 2686 
server accepts handled requests
 14810542 14810542 8026702 
Reading: 0 Writing: 69 Waiting: 2567

再看了下Nginx的错误日志,发现有很多用户提前主动关闭页面留下的日志,说明访问到这台机器上的用户,打开页面是非常慢了。如果大量用户的主动关闭,那这台机器上的流量是会低很多。

tail -f /data/nginx/logs/mydomain_com_error.log

#问题机器
upstream prematurely closed connection while reading response header from upstream

对比了一下问题机器和正常机器上的Nginx主Conf和Vhost配置,没有任何不同。用iostat看了下磁盘IO情况,相差不大。

百思不得其解,于是跑去请教高人,高人三下五除二之后,ping了下 Upstream 的IP,发现问题机器ping的时候延时竟然达到了300ms,而正常机器则只有0.2ms左右:

#问题机器
64 bytes from 10.10.10.10: icmp_seq=1 ttl=61 time=299 ms
64 bytes from 10.10.10.10: icmp_seq=2 ttl=61 time=246 ms
64 bytes from 10.10.10.10: icmp_seq=3 ttl=61 time=349 ms
64 bytes from 10.10.10.10: icmp_seq=4 ttl=61 time=291 ms

#正常机器
64 bytes from 10.10.10.10: icmp_seq=1 ttl=61 time=0.239 ms
64 bytes from 10.10.10.10: icmp_seq=2 ttl=61 time=0.083 ms
64 bytes from 10.10.10.10: icmp_seq=4 ttl=61 time=0.112 ms

怀疑是网络问题,于是找Ops帮忙查看。在各路Ops大神的热情帮助下,发现网卡竟然跑满了!但从我们正常机器实际流量看,高峰期单机流入也就140Mbit/s,不至于将我们的千兆网卡跑满。

再追的时候,发现了一个惊天秘密:

sudo ethtool eth0

#问题机器
Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 100Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: Unknown
    Supports Wake-on: pumbg
    Wake-on: g
    Current message level: 0x00000003 (3)
    Link detected: yes

#正常机器
Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: Unknown
    Supports Wake-on: pumbg
    Wake-on: g
    Current message level: 0x00000003 (3)
    Link detected: yes

说好的千兆网卡呢?在问题机器上怎么变成100Mb/s了?

NetOps的大神们又一次热情的帮助我们,人肉去到机房,让我们那块偷懒的网卡重新回到了工作岗位。至此,这次问题完美解决。

原文链接:http://tabalt.net/blog/a-lazy-network-card-leads-to-server-load-imbalance/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/9157.html

相关文章

  • 一块偷懒网卡导致务器负载异常

    摘要:原文链接最近因服务部署,上线了一批物理机做,上线后发现我们有个机房的其中一台机器负载比较闲,网卡流入流出也相比其他机器低一截,于是准备看看到底是什么情况。 原文链接:http://tabalt.net/blog/a-lazy-network-card-leads-to-server-load-imbalance/ 最近因服务部署https,上线了一批物理机做Proxy,上线后发现我们有...

    peixn 评论0 收藏0
  • 一文梳理 RedHat 和 CentOS 运维中网络知识

    摘要:一系统运维中网络方面的规划与思考在很多公司,岗位职责都是很明确的,专职转岗,每人或者每组负责一块业务。二系统运维中网络方面操作梳理在系统运维中,经常涉及的网络方面的操作,一般由以下几个方面组成。初步意见,交换机上线这台机器所连端口。运维是一门艺术,也是一门苦差事,每个人对此均有不同的理解,正所谓一千个人眼中有一千个哈姆雷特。干一行就要爱一行,既然选择了这个行业,较好是能把它做到较好,发挥自己...

    Olivia 评论0 收藏0
  • 私有云部署-UCloudStack私有云部署之虚拟机

    摘要:虚拟网卡与虚拟机的生命周期一致,无法进行分离,虚拟机被销毁时,虚拟网卡即被销毁。每块虚拟网卡支持绑定一个安全组,提供网卡级别安全控制。平台默认提供块虚拟网卡,若业务有块以上网卡需求可通过绑定弹性网卡,为虚拟机提供多网络服务。虚拟机是 UCloudStack 云平台的核心服务,提供可随时扩展的计算能力服务,包括 CPU 、内存、操作系统等最基础的计算组件,并与网络、磁盘等服务结合提供完整的计算...

    ernest.wang 评论0 收藏0
  • 务器无法远程连接?4步排查,准能解决!

    摘要:今天百晓生就阿里云服务器无法远程连接的问题,分享一波运维必备的问题排查方法,说明以下操作在位操作系统中进行过测试。确认公网带宽是否不足无法远程连接可能是公网带宽不足导致的,具体排查方法如下登录管理控制台。在运维工程师的日常工作中,经常需要登录到服务器上对应用部署和维护,配置修改是很常规操作。但是在日常运维工作中,经常也会遭遇滑铁卢,当出现无法远程连接服务器的时候,我们需要沉着冷静,耐心分析报...

    Tecode 评论0 收藏0
  • [转载] PHP升级导致系统负载过高问题分析

    摘要:分析的结果,发现内存,基本没有什么大的变化,网卡流量明显降低,上下文切换明显升高。网卡流量降低可以理解,因为当前系统已不能正常返回响应,但上下文切换升高却不知道什么原因。 原文:http://chuansongme.com/n/797172 背景 据XX部门兄弟反应, 其在将PHP从5.3.8 升级到5.5.13 时, 开始运行正常, 运行一段时间后, 系统负载变高,达到200%以...

    mmy123456 评论0 收藏0

发表评论

0条评论

calx

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<