记录一次网络异常问题的排查

问题背景

在一次现场硬件部署实施过程中,实施人员突然发现网络大批量请求超时的情况,在确认现场网络通畅的情况下,立刻通知给了我们开发人员。经过调试,发现所有接口均出现了断断续续无法访问的情况,基本上完全处于不可用状态。出现这种情况第一反应是网络问题,因为线上机房位于位于电政办,之前有过网路不稳定的情况,在电话沟通后得知对方此时网络也异常慢,此时已无力吐槽这贷款了。

但是问题真的就只是网络带宽这么简单吗?

通过Zabbix排查问题

线上集群几乎每个节点都部署了Zabbix集群监控,通过NetWork监控项可以排查网络问题,大体流量图如下:

Zabbix网络监控

可以发现,除了部分时刻网络流量骤增之外,大部分时间还是比较平稳的,其中绿色代表incoming流量,蓝色代表outgoing流量。根据此图(主要是没有流量断点)可以大致判断并非完全是由于网络问题导致的问题。

但是再仔细想想,整个系统采用的是分布式架构,各节点间的调用均通过RPC调用,只有几个节点是对外通过Nginx代理访问的,也就是说Nginx节点入口是导致问题的关键。然而遗憾的是Nginx节点上并没有部署Zabbix,只能手动排查了。

发现真实问题原因

首先在Nginx节点上执行已下命令

netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'

可以发现等待请求在不断增加,说明有较多请求阻塞了。很自然的联系到Nginx的配置,

这里修改了worker_processes 、worker_connections配置,重启Nginx,再次执行命令,此时发现阻塞的请求数量有所下降,但是还是一直不断的在增加。

好吧到这里基本已经开始怀疑服务器跟带宽已经跟不上了,但是究竟是啥请求在一直访问呢?

执行netstat -t查看一下,发现所有的请求均来自与39节点,该节点上最近刚刚部署了C/S端的程序,于是通知C部门排查,最终确认了问题。停掉C/S端后,其他请求陆续恢复了正常。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Zabbix简介 Zabbix官方网站Zabbix中文文档 本文系统环境是CentOS7x86_64, Zabbi...
    Zhang21阅读 8,111评论 0 37
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,811评论 24 1,002
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡、反向代理、代理缓存、限流等场景;而把Nginx...
    木易林1阅读 2,868评论 0 15
  • 1.写在前面 本文主要介绍的是zabbix的编译安装过程,包含它的基础环境LNMP,虽然zabbix官方一般推荐的...
    天之蓝色阅读 2,568评论 0 16