由VIP漂移引发的算法异常问题调查和解决
最近工作中的一个问题,耗时一个月之久终于调查完毕且顺利解决,顿时感慨万千。耗时之久和预期解决时间和环境搭建以及日志不合理等等有关,当然这个并非此文的重点。
之所以在很久以后的今天又开始写文,主要是这个问题调查的过程值得铭记。具体情况如下文述。
一、问题发现过程
数据告警服务提示相关分析结果缺失,经初步调查,发现分析服务在调用对应的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漂移引发的算法异常问题调查和解决的更多相关文章
- keepalived vip漂移基本原理及选举算法
keepalived可以将多个无状态的单点通过虚拟IP(以下称为VIP)漂移的方式搭建成一个高可用服务,常用组合比如 keepalived+nginx,lvs,haproxy和memcached等.它 ...
- (转)小谈keepalived vip漂移原理与VRRP协议
背景:之前搭建过keepalived双机热备的集群,但对其中的原理不甚理解,看完就忘了,所有有必要深入的学习下. 简介 什么是keepalived呢?keepalived是实现高可用的一种轻量级的技术 ...
- 浅析keepalived vip漂移原理与VRRP协议
2017-01-18 Martin 开源技术社区 简介 什么是keepalived呢?keepalived是实现高可用的一种轻量级的技术手段,主要用来防止单点故障(单点故障是指一旦某一点出现故障就会导 ...
- 经纪xx系统节点VIP案例介绍和深入分析异常
系统环境 硬件平台 & 操作 IBM 570 操作系统版本号 AIX 5.3 物理内存 32G Oracle 产品及版本号 10.2.0.5 RAC 业务类型 OLTP 背 ...
- MHA集群(gtid复制)和vip漂移
在上一片博客中,讲述了怎么去配置MHA架构!这片博客不再细说,只说明其中MySQL主从搭建,这里使用的是gtid加上半同步复制! 步骤与上一片博客一样,不同之处在于MySQL主从的搭建!详细的gtid ...
- mysql高可用架构 -> MHA配置VIP漂移-05
VIP漂移的两种方式 1)通过keepalived的方式,管理虚拟IP的漂移 2)通过MHA自带脚本方式,管理虚拟IP的漂移 MHA脚本方式 虚拟ip漂移的脚本下载地址 -> wget http ...
- TCP端口复用引发的异常,用setsockopt来解决
TCP端口复用引发的异常,用setsockopt来解决 我们在并发连接一个服务端时候他会出现这种情况 OSError: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允 ...
- mha之vip漂移 配置binlog-server备份服务器 Atlas
MHAvip漂移 配置 通过MHA自带脚本方式,管理虚拟IP的漂移 获取管理脚本master_ip_failover cp master_ip_failover /usr/local/bin/ #脚本 ...
- MHA 的 Binlog Server & VIP 漂移
目录 Binlog Server 在 MHA 配置文件中配置 Binlog Server 创建 Binlog 存放目录 实时传输主库 Binlog 命令 重启 MHA 检验 MHA Manager 服 ...
随机推荐
- 09_EM算法
今天是2020年3月5日星期四.预计开学时间不会早于四月初,真是好消息,可以有大把的时间整理知识点(实际上发文章的时间都6月6号了,希望9月份能开学啊,不耽误找工作~).每次导师找,整个人会变的特别烦 ...
- 01.vue-router的基本使用
Vue前端路由 1. npm install vue-router --save 2.脚手架安装 一.目录结构 二.index.js // 0.导入vue和路由插件 import Vue from ' ...
- Vue —— VueX精讲(1)
大纲 这一讲我们最主要的就是学习vue中的数据管理VueX,这个是一个大杀器 一.回顾一些Promise相关的东西 Promise 有几个比较重要的方法,最重要的还是有一个叫做all的方法,这个也是非 ...
- 【深度思考】JDK8中日期类型该如何使用?
在JDK8之前,处理日期时间,我们主要使用3个类,Date.SimpleDateFormat和Calendar. 这3个类在使用时都或多或少的存在一些问题,比如SimpleDateFormat不是线程 ...
- Spyder汉化教程
汉化包下载地址:https://www.lizenghai.com/archives/523.html 1.解压汉化包 2. 3.1.运行汉化补丁PS C:\WINDOWS\system32> ...
- Jquery封装: 地区选择联动插件
请点击下载百度云链接: 链接: https://pan.baidu.com/s/1plVmdJT2O4fLJokyJDQA2g 密码: aqt2
- C# .net framework .net core 3.1 请求参数校验, DataAnnotations, 自定义参数校验
前言 在实际应用场景中我们常常要对接口的入参进行校验, 例如分页大小是否正确, 必填参数是否已经填写等等. 最简单的实现方式如下图, 这种在实际开发中代码过于冗余, 而且不灵活. 今天介绍一种统一参数 ...
- 如何利用Excel设计一个唱票统计系统?
具体操作如下: 首先需要一个如下的数据结构. 唱票数G列区域,不能手动输入候选人票数,这样很不方便,所以我们需要一个窗体控件,用点击鼠标的方法来实现唱票.在“开发工具-插入-数值调节钮”下图3处,然后 ...
- TensorFlow从0到1之TensorFlow Keras及其用法(25)
Keras 是与 TensorFlow 一起使用的更高级别的作为后端的 API.添加层就像添加一行代码一样简单.在模型架构之后,使用一行代码,你可以编译和拟合模型.之后,它可以用于预测.变量声明.占位 ...
- Scanner扫描器的使用
Scanner:扫描器,可以通过Scanner类扫描用户在控制台录入的数据. 1.导包 //导包快捷键Alt+Enter 2.创建键盘录入对象 //键盘录入对象的名称为 “sc” 3.接收数据 //将 ...