客户端访问不可达故障集

0 背景

经历过多次半夜被电话叫醒,因为大量用户访问服务慢。所以在此写一写解决思路。

环境是:分布式架构,服务端由linux上的C++写的进程组成。服务器是公有云。

case 网络波动

网络波动,就是Flipping,一般在广域网才会提到,是由于线路的不稳定,出现时通时断或瞬断的现象。Flipping一般都是运营商造成,是会经常出现、不可避免的。

有的架构是跨机房的,前后端是在两个机房,机房之间的网路延迟决定服务质量。如果在监控图表(zabbix)上出现峰值,就会出现前后端通信问题,影响客户端体验。

有时架构是在一个机房的,但是机房网络波动出入口也会出问题,这个一般可以向公有云服务商确认。

手动确认方式:

ping:查两点之间的延迟

traceroute/tracert:查CS之间的路由链路,看哪个节点出现高延迟。

case  DDos攻击

DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击。

DDoS攻击,对服务器突发性地输入大量无效或慢速的访问请求,导致服务器流量需求激增,导致带宽超限、服务器卡死。

DDoS攻击不但会造成目标服务器瘫痪,还会影响机房内网正常运作。机房防火墙检测到这种情况,将直接封停服务器IP。

公有云服务商有高防IP业务,就是把攻击流量引到高防IP,使业务正常。特点是贵。

解决办法:

前端部分负载均衡器配置高防

case  进程死循环

由于程序内部问题导致cpu占用过高,只要马上kill服务重启,然后排查程序内部问题。

服务器压力减少I,则客户端访问正常

case  debug log拖死服务器

如果进程的debug log模式日志输出量特别大,相较于info模式,cpu占用会成倍上升,动态调整日志等级即。服务器压力减少I,则客户端访问正常。

原文地址:https://www.cnblogs.com/jabbok/p/9877344.html