当前位置: 首页 > news >正文

【OceanBase诊断调优】—— 如何排查 server 断连接问题

本文介绍如何排查 server 断连接问题。

断开连接的常见原因

  • 协议层异常 发送报文时遇到发生一些非预期的错误,server 将会发生主动断开连接。

  • 事务异常 包括 rollback 失败或 commit 失败。

  • Query 异常 已输出行数据,但 server 内部发生错误。

  • Processor 发生异常 获取 processor 为空。

  • 处理 processor 发生异常。初始化变量时发生异常。

  • session is killed。

    • 删除租户 比如在删除租户后,如果 proxy 错误地路由请求到本机,导致 query 发现 session is killed,导致断连接。

    • 杀事务。

    • 主动 kill session。

断开连接的排查步骤

  1. 使用断开连接的 conn id 找到客户端(OBProxy、Connector/JDBC、OBCI)连接到服务器的 sess_id(也可能称为 thread_id)。

  2. 在服务器日志中使用 sess_id 搜索与断开连接相关的 observer 日志信息。

    grep "kill and revert session" observer.log* | grep <sess_id>
    
  3. 使用日志中的 trace_id 搜索 observer 日志,找到报告错误代码 -5066 的开始位置,以确定断开连接的原因。

    grep <trace_id> observer.log*
    
  4. 如果原因为上述异常情况,保存日志信息、环境信息和 trace_id 并联系 OceanBase 技术支持协助处理。

如何查找 conn_id

当 Query 异常时通常会报出 -5066 错误码,在 observer 日志中可以根据 trace_id 来查找。

日志信息如下。

observer.log.20230705172820016:[2023-07-05 17:26:35.988048] WDIAG [SQL] stmt_query (ob_sql.cpp:210) [61238][T1004_L0_G0][T1004][xxxxx-xxxxx-xxxxx-xxxxx] [lt=9][errcode=-5066] fail to handle text query(stmt=INSERT INTO test VALUES (SLEEP(1)), ret=-5066)

这里表示 session interrupt。随后搜索 connection close 来找到 sessid,如以下示例日志中的信息。

observer.log.20230705172820016:[2023-07-05 17:26:36.091289] INFO [RPC.OBMYSQL] destroy (obsm_conn_callback.cpp:223) [52261][sql_nio1][T0][Y0-0000000000000000-0-0] [lt=27] connection close(sessid=3221585899, ...)

在这个示例中,3221585899 即为 conn id 值。

适用版本

OceanBase 数据库所有版本。

附录

OceanBase 敏捷诊断工具(OceanBase Diagnostic Tool, 简称obdiag) 是一款源代码开源敏捷黑屏诊断工具,可以对OceanBase集群进行一键集群巡检、一键分析、一键根因分析以及一键诊断信息收集。

  • obdiag 下载地址: OceanBase分布式数据库-海量数据 笔笔算数
  • obdiag 官方文档: OceanBase分布式数据库-海量数据 笔笔算数
  • obdiag github地址:GitHub - oceanbase/obdiag: obdiag (OceanBase Diagnostic Tool) is designed to help OceanBase users quickly gather necessary information and analyze the root cause of the problem.
  • obdiag 开发者营地:诊断工具 · OceanBase 技术交流

http://www.lryc.cn/news/345362.html

相关文章:

  • 基于Vant UI的微信小程序开发(随时更新的写手)
  • 力扣数据库题库学习(5.7日)--1757. 可回收且低脂的产品
  • 支付宝——图技术在金融反欺诈中的应用
  • 【Docker学习】docker run的端口映射-p和-P选项
  • 乡村振兴与城乡融合发展:加强城乡间经济、文化、社会等方面的交流与合作,推动城乡一体化发展,实现美丽乡村共荣
  • 什么是职称评审?如何申报?怎么获取职称电子证书?
  • PC小程序解密及反编译
  • 【吃透Java手写】4-Tomcat-简易版
  • 开发中的一些专业术语,POJO、PO...
  • 79.网络游戏逆向分析与漏洞攻防-移动系统分析-利用数据包实现人物走路
  • JS基础:输出信息的5种方式详解
  • 教你解决PUBG绝地求生延迟高 网络延迟高的问题
  • 【QT教程】QT6与C++17 QT与C++新特性
  • 多线程三种实现
  • 【前端】HTML实现个人简历信息填写页面
  • 岩点×数说故事×小红书 | 发布《中国攀岩行业分析报告》
  • DPDK+PKTGEN环境搭建
  • 【面试干货】HTTP和HTTPS之间的主要区别
  • 04、Kafka集群安装
  • Vue自定义封装音频播放组件(带拖拽进度条)
  • php中常见的运算符和使用方法
  • 信息与未来2017真题笔记
  • 前端基础知识-ES6解构赋值(将数组内元素、字符串内字符、对象内属性值快速赋值给其他变量)
  • 【SpringBoot整合系列】SpringBoot整合RabbitMQ-消息可靠性
  • Hbase 常用shell操作
  • 数据库被攻击后出现1044 - access denied for user ‘root‘@‘% ‘ to database table
  • 在哪里打印资料比较便宜
  • leetcode 2606.找到最大开销的子字符串
  • 超标量处理器设计:重排序缓存(ROB)
  • nginx常用内置变量