成功解决 -- An I/O error occured while sending data to the backend.

2023-11-12

问题描述

Oracle通过kettle工具同步数据到Gauss报IO错误。

在这里插入图片描述

历史经验

  • 应用侧
  1. 获取连接后未及时关闭(DriverManager.gerConnection后未调用con.close),下次再使用连接时已被数据库侧清除,用户感知到IO错误。
  2. 使用kettle表输入/输出方式同步数据:原理是开启一个事务,一次执行1000个insert,效率低,占用网络资源多,频繁地连接和断开,就会出现网络压力太大导致断开的问题。
  • 数据库侧
  1. 管理员通过 select pg_terminate_backend(pid) 主动终止连接
  2. CN 节点(接收SQL请求的节点)重启
  3. 数据库磁盘使用率 > 90% 转为只读

排查步骤

  • 步骤1:服务端自检
  1. 日志中无主动关闭用户连接的记录
  2. CN节点问题出现附近无重启记录(如何查看)
  3. 数据库磁盘状态良好
  • 步骤2:从kettle工具入手
  1. 客户确实使用的是表输入输出方式进行入库的
  2. 提供kettle=>gauss插入数据的推荐用法(https://bbs.huaweicloud.com/forum/thread-26690-1-1.html);底层用的copy语法,一次连接,每次传输量大,连接资源花销也不大。
  3. 提供kettle=>gauss插入更新数据的解决思路;新建临时表 -> 通过推荐方式导入到临时表 -> 将临时表和目标表执行merge into。
  4. 目前gauss还不支持upsert(插入更新)语法,已经在规划中。
  • 步骤3:用户未反馈问题是否解决,但其它用户反馈出现非kettle工具与Gauss集群交互IO报错,排查方向转向“连接超时清除”

在这里插入图片描述

  1. 部署服务端监控脚本,观察有无临界超时时间仍处于“idle”状态的连接
  2. 应用侧自检:有无及时关闭连接,业务运行报错时机(即立即报错还是运行中报错)
  3. 排查结果:应用侧使用连接池管理连接,业务整体运行时间 < 连接超时时间,基本排除连接超时,问题未解决。
  • 步骤4:研发求助网络专家,排查到集群安装时设置的LVS存在错误
  1. 各个方向均已排查完毕,仍未解决问题
  2. 求助网络专家,提供另一条线索:keepalived中设置vrrp_id是否在IP段内冲突
  3. 排查集群的LVS,发现租户1集群和租户2集群位于同一网段,且安装时你设置的vrrp_id设置相同,找到问题跟因

在这里插入图片描述

  1. root # less /etc/keepalived/keepalived.conf

在这里插入图片描述

解决方法

  • 修改keepalived中设置vrrp_id 并重启 root# > sh /etc/init.d/gs_keepalived restart
  1. GaussDB A的lvs是基于vrrp+Keepalived+lvs架构,virtual_router_id意为虚拟路由的ID号,这个标识是同一个vrrp协议实例使用唯一的标识,即同一个VRRP组内,master和backup的virtual_router_id是一致的;
  2. virtual_router_id决定多播的MAC地址,同时在整个vrrp内是唯一的,每个主备节点设置必须一样,相同的VRID 为一个组,因为其通信协议vrrp协议是多播方式;
  3. 但同一网段内(没有划分vlan和物理网络隔离)的网络架构下,VRRP协议在多播的时候需要根据不同的virtual_router_id来区分不同的集群,从而将数据包转发到指定的cn上;
  4. 如果不划分,在多播的时候就会给全都发,导致报文分发到了非预期的router上,而错误的节点接收到了错误的包,导致上层业务报连接超时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

成功解决 -- An I/O error occured while sending data to the backend. 的相关文章

  • 搞定高并发系列:如何设计一个高并发系统

    如何设计一个高并发系统 现在这个是每个架构师都需要考虑的问题 当然每个人面对的业务场景都不一样 这里我们纯粹从技术角度探讨 我总结了下 要点如下 负载均衡 缓存优先 服务拆分 系统拆分 冗余扩容 削峰限流 熔断降级 分库分表 读写分离 一
  • Redis系列--redis管道

    一 前言 1 reids客户端向服务端发送命令分四步 发送命令 命令排队 命令执行 返回结果 并监听socket返回 通常以阻塞模式等待服务端响应 2 服务端处理命令 并将结果返回给客户端 以上两步称为 Round Trip Time 简称
  • logback日志框架学习(1)介绍logback

    首先说下对日志框架的感受 很多人slf4j api slf4j simple logback core logbak classic log4j logj42很多的日志框架 控制台各种输出的时候日志框架warn error 有时候还不能输出
  • pycharm的terminal无法识别到命令 pytest 不是内部或外部命令,也不是可运行的程序 或批处理文件。

    pytest 不是内部或外部命令 也不是可运行的程序或批处理文件 在Pycharm中运行python或者pip或者pytest命令都没有反应 但是在cmd下运行正常 原因 Pycharm创建的项目有运行环境的 如果你没更改 默认的应该是虚拟
  • UE4中光照的常见问题和解决

    div class mw indicators mw body content 中文 光照的常见问题和解决 From Epic Wiki div class mw jump Jump to a href mw head navigation
  • Unity Android接入MoPub聚合广告SDK

    这里只总结前端接入流程和注意事项 后台配置请参考官方详细文档 mopub广告有以下类型 Bananer 横幅 Interstitial 插屏 Rewarded Video 激励视频 Rewarded Playable 互动式激励 MRAID
  • 零基础入门必看,Python与Python解释器详解

    系列文章目录 Python语言基础 注释的作用及分类 Python语言基础 常用运算符总结 Python语言基础 定义变量与数据类型 Python语言基础 if判断和循环总结 Python语言基础 理解面向对象 Python语言基础 集合的
  • 利用Python进行数据分析(附详细案例)

    一 前期准备 分析要用到两个包 NumPy和Pandas 首先确保jupyter中成功安装了这两个包 导入numpy包 import numpy as np 导入pandas包 import pandas as pd 二 基础知识 2 1
  • java string 路径_java - 如何从包含绝对文件路径的String中获取文件名?

    java 如何从包含绝对文件路径的String中获取文件名 String变量包含文件名 C Hello AnotherFolder The File Name PDF 如何只将文件名The File Name PDF作为字符串 我打算拆分字
  • 防止重复提交NoRepeatSubmit

    import java lang annotation Documented import java lang annotation ElementType import java lang annotation Inherited imp
  • ORACLE实现更改列字段类型为CLOB

    场景 更改表TBL MER BASE INFO R EXPAND 中的QRCODE DATA列字段类型为CLOB类型 SQL alter TABLE TBL MER BASE INFO R EXPAND ADD temp clob CLOB
  • google site 网站搜索功能

    语法格式 site 网址 关键词 或者 关键词 site 网址 注意事项 1 site 后边跟的冒号必须是英文的 中文的全角冒号 无用 2 url前不能带http 3 url后边不能带斜杠 其实是哪里都不能带 4 url中不要用www 除非
  • c++中冒号(:)的用法

    1 class或struct后面的冒号是用来定义类的继承 例如 class 派生类名 继承方式 基类名 派生类的成员 struct B A char b 继承方式 public private和protected 默认处理是public 2
  • 自定义HorizontalScrollView的滑动条

    class MYHScrollView HorizontalScrollView interface OnScrollChangedCallback fun onScrollChanged view MYHScrollView x Int
  • blender 2.8的基本使用和使用形态键(Shape key)做帧动画

    文章目录 打开blender 盒子形状 用形态键做帧动画 一些常用快捷键 打开blender 首先打开blender 2 8 出来的画面是这样的 点击画面的任意位置 除中间弹出框 就可以关闭弹出框 之后点击上方的Help gt Splash
  • 证券从业资格考试——金融市场基础知识关键点和错题整理

    证券从业资格考试 金融市场基础知识错题及关键知识点整理 金融市场基础知识错题整理 一 各种申请条件 只记录关键的数字 二 与数字相关的点 时间 百分比 人数等 三 其他 金融市场基础知识错题整理 整理在做习题 真题中做错的题 个人以为的关键
  • volatile关键字的使用

    volatile 这个关键字的作用是不要编译器帮我们做任何的优化工作 例子 这个输出n的值是100 因为g 编译器帮我们作了优化 g 认为n是个常量 所以n的是不变的 这也是为什么c 访问常量的速度比C语言快的原因 但是 你可能会说 con
  • bacnet ddc控制器如何通过485口转发Modbus协议控制modbus执行设备

    要将BACnet DDC控制器通过485口转发Modbus协议控制Modbus执行设备 可以按照以下步骤进行 确定Modbus执行设备的通信参数 包括串口波特率 数据位 停止位和校验位等参数 确保BACnet DDC控制器的485口通信设置
  • linux 动态库搜索路径优先顺序以及Makefile 编译设置

    一 linux 下 动态库搜索路径优先顺序 编译目标代码时指定的动态库搜索路径 环境变量LD LIBRARY PATH指定的动态库搜索路径 配置文件 etc ld so conf中指定的动态库搜索路径 配置后要运行 ldconfig命令才能
  • ACK打击是什么意思?ACK打击怎么防御?

    ACK Flood打击是TCP连接建立之后 所有传输的TCP报文都是带有ACK标志位的数据包 接收端在收到一个带有ACK标志位的数据包的时候 需要检查该数据包所表示的连接四元组是否存在 如果存在则检查该数据包所表示的状态是否合法 然后再向应

随机推荐

  • 爬虫项目实战十四:爬取慕课课程

    爬取慕课学校云课程 目标 项目准备 项目分析 代码实现 完整代码 效果显示 目标 爬取慕课学校云的课程信息 项目准备 软件 Pycharm 第三方库 requests 网站地址 https www icourse163 org 项目分析 首
  • 如何将Springboot项目升级成Springcloud项目(有图详解)

    本文以nacos为例 分为以下几个步骤 1 下载nacos软件 2 pom文件配置 3 application yml文件配置 4 代码调用 5 效果展示 一 下载nacos软件 1 1 下载nacos server 2 2 0 BETA这
  • Could not transfer metadata org.apache.maven.plugins/maven-metadata.xml from

    原因 从阿里云镜像仓库下载不了依赖文件 解决办法 1 在IDEA里面 File gt Settings gt Build Execution Deployment gt Build Tools gt Maven gt Runner 的VM
  • Allegro如何将好几块同一网络敷铜合并在一起

    1 如题 如下图圈起来的地方是三个同一网络的敷铜 2 点击Shape Merge shapes 将上图中的三个腹铜圈起来 然后右键done 就合并成了一个敷铜
  • vue模拟锚点定位加动画

    模拟锚点跳转 goAnchor selector let anchor this el querySelector selector document documentElement scrollTop anchor offsetTop l
  • 质数

    include
  • 0x0000007B:A problem has been detected and windows has been shut down to prevent damage to your Comp

    0x0000007B 这个代码和硬盘有关系 不过不用害怕 不是有坏道了 是设置问题或者病毒造成的硬盘引导分区错误 如果您在用原版系统盘安装系统的时候出这个问题 那说明您的机器配置还是比较新的 作为老的系统盘 不认这么新的硬盘接口 所以得进B
  • ARKit和SceneKit

    ARKit SceneKit 首先看一下官方描述 学习ios开发真的要多看原文档 帮助很大 ARKit 整合iOS设备相机和运动功能 在您的应用程序或游戏中产生增强现实体验 SceneKit 使用高级场景描述创建3D游戏并将3D内容添加到应
  • 自学网络安全详细路线图来了

    大家好 我是轩辕 上一次的 C C 后端开发路线图 的末尾 预告了网络安全方向的学习路线 让大家久等了 今天终于来了 算上从学校开始学习 轩辕已经在网安这条路上走了10年了 无论是以前在学校做安全研究 还是毕业后在百度 360从事内核安全产
  • sklearn基础学习笔记

    本文对scikit learn中常用的class 和function做一个总结 一 sklearn cluster 聚类算法 class cluster KMeans n clusters init n init KMeans n clus
  • UML类图符号 各种关系说明以及举例

    转自 http www cnblogs com duanxz archive 2012 06 13 2547801 html UML中描述对象和类之间相互关系的方式包括 依赖 Dependency 关联 Association 聚合 Agg
  • 网络安全基础要点知识介绍

    本文章只为了方便查阅 文章目录 网络安全 网络安全问题概述 两类密码体制 数字签名 鉴别 报文鉴别 实体鉴别 密钥分配 对称密钥的分配 公钥的分配 互联网使用的安全协议 运输层安全协议 参考文献 网络安全 网络安全问题概述 计算机网络的通信
  • 真题详解(数字签名算法)-软件设计(七十八)

    真题详解 有限自动机 软件设计 七十七 https blog csdn net ke1ying article details 130748759 可用于数字签名算法的是 答案 非对称RSA 移植性 易安装 易替换 适应性 UML状态图转换
  • P16-Login.vue内容

  • Java 中时间类 Calendar、Date、SimpleDateFormat 的相关详解

    参考Java 1 8 文章目录 java util Date methods java util Calendar methods Calendar 方法举例 java text SimpleDateFormat 符号对应的意思 构造方法
  • vue实现一行多列的表单校验

    背景 在开发过程中 经常会遇到一行多列的情况 并且需要做表单校验 element文档给的required案列是单列输入框 使用场景不符合动态一行多列验证 第一种方式 一个表单 循环多行 代码
  • redis模糊批量清除key

    文章目录 一 命令行删除 二 golang代码删除 有时候需要从 Redis 实例成千上万的 key 中找出特定前缀的 key 列表来手动处理数据 可能是修改它的值 也可能是删除 key 这里就有一个问题 如何从海量的 key 中找出满足特
  • 三维偏序(陌上花开)

    题目描述 题解 这是cdq分治模板题 前置 cdq分治 好像是一位大佬搞出来的神奇分治 可以直接干掉一层树形结构 其实实现还是比较简单的 对于区间 l r 我们先处理 l mid 和 mid 1 r 然后处理左右区间之间产生的影响 具体顺序
  • 华为OD机试 - 战场索敌(Java & JS & Python)

    题目描述 有一个大小是N M的战场地图 被墙壁 分隔成大小不同的区域 上下左右四个方向相邻的空地 属于同一个区域 只有空地上可能存在敌人 E 请求出地图上总共有多少区域里的敌人数小于K 输入描述 第一行输入为N M K N表示地图的行数 M
  • 成功解决 -- An I/O error occured while sending data to the backend.

    文章目录 问题描述 历史经验 排查步骤 解决方法 问题描述 Oracle通过kettle工具同步数据到Gauss报IO错误 历史经验 应用侧 获取连接后未及时关闭 DriverManager gerConnection后未调用con clo