最近工作中的一个问题,耗时一个月之久终于调查完毕且顺利解决,顿时感慨万千。耗时之久和预期解决时间和环境搭建以及日志不合理等等有关,当然这个并非此文的重点。
之所以在很久以后的今天又开始写文,主要是这个问题调查的过程值得铭记。具体情况如下文述。

一、问题发现过程
数据告警服务提示相关分析结果缺失,经初步调查,发现分析服务在调用对应的NLP算法服务时出现大量Failed,遂查看算法日志,确实存在错误信息。

二、问题调查和解决
1.定位问题
1) 反馈给算法相关开发同学:他们认为可能是该算法遇到了长文本数据(超过3000字),由于分析时间超长,导致后续算法请求时出现阻塞而导致failed。
2) 根据开发的反馈,开始定位是否存在这样的长文本数据:通过分析日志和数据库查询确认后,并没有分析长文本数据,且出现异常时的文本数据均为短文本(小于200)。
3) 深入调查:该算法部署了多个节点,出现异常时,多个节点均出现了异常,因此可能是算法本身遇到了某个瓶颈问题。经确认,该算法使用了同一台GPU服务器上的tf-serveing服务。
4) 确认GPU服务器是否发生了异常情况:经确认,该服务器进行过VIP漂移操作。
5) 问题是否可以复现:测试环境中,对GPU服务器进行vip漂移操作,发现错误现象出现,问题可复现。
因此,问题的起因是GPU服务器进行了VIP漂移操作,导致算法出现异常。

2.调查问题
1) 了解vip原理,初步了解后,觉得可能是我们的算法缺少超时设置,因此算法中新增超时设置后,再次进行测试
备注:keepalived可以将多个无状态的单点通过虚拟IP(以下称为VIP)漂移的方式搭建成一个高可用服务,常用组合比如 keepalived+nginx,lvs,haproxy和memcached等。
它的实现基础是VRRP协议,包括核心的MASTER竞选机制都是在VRRP协议所约定的。
2)一轮测试发现:问题仍然存在,修复失败,且无新增日志。于是,我们要求增加日志信息,并以Debug方式启动算法,进行二轮测试。
3)二轮测试发现:问题仍然存在,出现新的错误日志,错误信息为:Connect error: No route to host(errno:113)。
百度一番,都说是server端的防火墙设置了过滤规则;但是,Server端并没有,怎么办?
Server端抓包:
经抓包发现,GPU服务器完成vip漂移需要耗时4s左右,然而,算法在漂移开始的2s内发送了近20次请求之后无请求。
问题的根源(可能):Server端vip漂移未完成时,算法却发送了大量请求导致Server端的tcp连接池满,后续server端不再为其他请求分配资源。

3.解决问题
1)根据调查的原因,修复方法是:sever端在进行vip漂移完成前,尽量减少算法的请求次数,因此我们对该算法进行了超时重试次数的设置和请求间隔的设置(可配置)。
2)算法修复后经测试,问题解决。

三、总结
1)合理且重要的日志输出对于问题的定位和调查非常重要
2)涉及HTTP请求的问题调查时,服务端抓包有必要
3)Linux 的errno113问题并不一定是设置了防火墙导致的

备注:
(一)vip环境:用来给K8s做三节点高可用,被K8s的kubeproxy的ipvs方式转发到具体pod,四层转发,tcp协议(NAT模式)
(二)Linux errono命令

由VIP漂移引发的算法异常问题调查和解决的更多相关文章

  1. keepalived vip漂移基本原理及选举算法

    keepalived可以将多个无状态的单点通过虚拟IP(以下称为VIP)漂移的方式搭建成一个高可用服务,常用组合比如 keepalived+nginx,lvs,haproxy和memcached等.它 ...

  2. (转)小谈keepalived vip漂移原理与VRRP协议

    背景:之前搭建过keepalived双机热备的集群,但对其中的原理不甚理解,看完就忘了,所有有必要深入的学习下. 简介 什么是keepalived呢?keepalived是实现高可用的一种轻量级的技术 ...

  3. 浅析keepalived vip漂移原理与VRRP协议

    2017-01-18 Martin 开源技术社区 简介 什么是keepalived呢?keepalived是实现高可用的一种轻量级的技术手段,主要用来防止单点故障(单点故障是指一旦某一点出现故障就会导 ...

  4. 经纪xx系统节点VIP案例介绍和深入分析异常

    系统环境    硬件平台 &  操作 IBM 570 操作系统版本号  AIX 5.3 物理内存  32G Oracle 产品及版本号  10.2.0.5 RAC 业务类型  OLTP 背 ...

  5. MHA集群(gtid复制)和vip漂移

    在上一片博客中,讲述了怎么去配置MHA架构!这片博客不再细说,只说明其中MySQL主从搭建,这里使用的是gtid加上半同步复制! 步骤与上一片博客一样,不同之处在于MySQL主从的搭建!详细的gtid ...

  6. mysql高可用架构 -> MHA配置VIP漂移-05

    VIP漂移的两种方式 1)通过keepalived的方式,管理虚拟IP的漂移 2)通过MHA自带脚本方式,管理虚拟IP的漂移 MHA脚本方式 虚拟ip漂移的脚本下载地址 -> wget http ...

  7. TCP端口复用引发的异常,用setsockopt来解决

    TCP端口复用引发的异常,用setsockopt来解决 我们在并发连接一个服务端时候他会出现这种情况 OSError: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允 ...

  8. mha之vip漂移 配置binlog-server备份服务器 Atlas

    MHAvip漂移 配置 通过MHA自带脚本方式,管理虚拟IP的漂移 获取管理脚本master_ip_failover cp master_ip_failover /usr/local/bin/ #脚本 ...

  9. MHA 的 Binlog Server & VIP 漂移

    目录 Binlog Server 在 MHA 配置文件中配置 Binlog Server 创建 Binlog 存放目录 实时传输主库 Binlog 命令 重启 MHA 检验 MHA Manager 服 ...

随机推荐

  1. Andorid中写文件后在电脑上看不到的解决办法

    每次通过输出流往SD卡写入文件,连接上电脑,用MTP的方式模拟一个移动磁盘,打开磁盘却没有这样一个文件,而通过adb的方式查看就有,造成这个现象的原因是,每次写入之后,MTP的数据库并没有更新,因为更 ...

  2. 掌握SpringBoot-2.3的容器探针:深入篇

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:原创分类汇总及配套源码,涉及Java.Docker.K8S.DevOPS等 关于<Spr ...

  3. MYSQL SQL 语句修改字段默认值

    alter table tablename alter column drop default; (若本身存在默认值,则先删除) alter table tablename alter column ...

  4. DedeCms 首页、列表页调用文章body内容的方法

    [第一种方法] arclist标签使用如下: {dede:arclist row='1' typeid='1' addfields='body' idlist='1' channelid='1'} [ ...

  5. [转]记一次linux(被)入侵,服务器变矿机~

    0x00 背景 周一早上刚到办公室,就听到同事说有一台服务器登陆不上了,我也没放在心上,继续边吃早点,边看币价是不是又跌了.不一会运维的同事也到了,气喘吁吁的说:我们有台服务器被阿里云冻结了,理由:对 ...

  6. 深浅拷贝 set集合

    数据类型的补充 编码转换 # s1 = '中国' # b1 = s1.encode('utf-8') # # print(b1)-------------->b'\xe4\xb8\xad\xe5 ...

  7. 【转载】图解NumPy

    目录 1. 读写文件 2. 内建向量/矩阵 3. 切片操作 4. 聚合函数 4.1. 向量 4.2. 矩阵 5. 矩阵的转置和重构 6. 常用操作API 7. 应用实例 7.1. 生成向量.矩阵 7. ...

  8. [TopCoder]Seatfriends

    题目   点这里看题目. 分析   可以想到用 DP 解决.   由于把空位放到状态里面太麻烦了,因此我们单独将 " 组 " 提出来进行 DP .   \(f(i,j)\):前\( ...

  9. String Problem(模板)【最短路】

    String Problem 题目链接(点击) Boy Valera likes strings. And even more he likes them, when they are identic ...

  10. cb02a_c++_数据结构_顺序容器_STL_list类_双向链表

    /*cb02a_c++_数据结构_顺序容器_STL_list类_双向链表实例化std::list对象在list开头插入元素在list末尾插入元素在list中间插入元素,插入时间恒定,非常快.数组:中间 ...