OBCP第八章 OB运维、监控与异常处理-常见异常处理

问题排查概述:数据库连接问题排查

在遇到连接问题时,需要清楚整个系统的架构,对整个连接链路进行排查。通常情况下应用连接到数据库的完整链路是从应用服务器到 OBProxy 再到 OB 集群,此外还可能涉及负载均衡、DNS 解析、网络等。一般连接问题如连接失败、连接断开、连接报错异常等问题排查,从以下两个方向入手:

OBProxy和应用之间的连接异常

OBProxy和OBServer之间连接异常

排查方式:

首先可以通过尝试连接,缩小问题链路的范围:

通过OBProxy连接数据库

直连OceanBase数据库

查看报错信息,常见报错类型有:

数据库事务状态异常,OB主动断开连接

应用端连接报错。如果报错信息涉及Get connection timeout及连接数,应查看应用是否有流量突增或DB连接数设置;如果报错信息涉及Communications link failure,连接可能被异常中断

问题排查概述:OBServer进程异常退出

当正在运行的OBServer异常退出时,通过操作系统(ps -ef命令)查询不到 OBServer进程的存在,此时,如果不是硬件损坏或者操作系统的问题,可尝试拉起observer进程作为应急手段;OBServer 在退出时会生成core dump文件,可以此为依据进行 OBServer 的异常退出根因分析(版本不同,core dump排查的方法不同)

 Lbt后的地址信息可以填入 addr2line -pCfe $observer $symbol_addr 命令中的$symbol_addr以获得CRAS原始信息和线程栈信息。( addr2line 可用于V2.2.76 版本之后)

问题排查概述:合并问题排查

进行合并问题排查时,首先要确定当前集群中的合并配置项,确定当前的合并状态,然后根据查询得到的情况,对不同的合并问题类型进行分析后再寻找根因

确认合并配置项:

需确定enable_manual_merge,zone_merge_concurrency,zone_merge_order,

enable_merge_by_turn,major_freeze_duty_time,enable_auto_leader_switch等配置项

确定合并状态:

SELECT * FROM __all_zone WHERE name = "frozen_version" or name = "last_merged_version";
SELECT * FROM __all_zone WHERE name = "merge_status";	

根据上面查询到的信息,可以将问题归于未合并问题、合并超时问题、合并慢问题,并做具体的分析

问题排查概述:合并问题排查

合并问题细分

判断步骤

未合并问题

ZONE未合并:SELECT * FROM __all_zone WHERE name = "global_broadcast_version" or name =

"broadcast_version"; 如果broadcast_version 等于 last_merged_version,且 last_merged_version 落后于

global_broadcast_version,说明 RootService 没有发起相关 Zone 的合并

副本未合并:SELECT * FROM __all_virtual_meta_table WHERE data_version != 25 LIMIT 10; 查询哪个主机上的

副本为合并(假设当前要合并的目标版本是25)

合并超时问题

定位未合并到指定版本的 partition

判断该 partition 的合并任务是否在执行中:SELECT * FROM __all_virtual_sys_task_status;

如果该 partition 没有调度合并任务,判断该 partition 的最新的转储 sstable 的 snapshot_version 有没有推过freeze_info 点,如果没有推过 freeze_info 点,说明转储有问题

合并慢问题

通过SELECT /*+ query_timeout(10000000)*/* FROM __all_virtual_partition_sstable_merge_info WHERE

merge_type = “major merge” and version = “<merge_version>” ORDER BY merge_cost_time desc

limit 5; 语句找到合并耗时最多的几个 partition 来具体分析

通过表 __all_virtual_partition_sstable_merge_info 查看宏块重用情况

查看合并开始时间是否合理

问题排查概述:事务问题排查

在运行 OceanBase 的过程中,OceanBase 会执行数据库事务,在执行后将执行返回的结果返回给发出请求的客户端;如果事务执行失败或者异常,会产生事务报错,常见的事务报错大体分为两大类:

事务执行过程中对客户端展示的错误

通过日志或内存表查询发现的环境异常

排查方式:

通过__all_virtual_trans_stat表可以查询到当前还未结束的事务上下文状态

进一步根据 trans_id搜索对应时间段内的 observer.log 日志,找到相应事务报错信息:

可以根据错误标识位(4038)判断问题是否属于事务回滚类、执行超时类、等待锁超时类等类型

问题排查概述:事务问题排查

 

问题排查概述:副本迁移问题排查

在进行副本迁移问题排查时,首先确定副本迁移是否不符合预期情况,然后再根据具体的迁移情况进行处理

确定副本迁移是否存在问题步骤:

确定问题partition:

SELECT * FROM __all_unit WHERE migrate_from_svr_ip != "" or 
migrate_from_svr_port !="";

查看RootService调动副本迁移任务的状态是否符合预期:

在 RootService 所在机器 grep “root_balancer” rootservice.log 获取线程号 LWP_ID,获取线程号后去grep “LWP_ID” rootservice.log 看 RS 的负载均衡线程正在执行的任务

检查系统虚拟表: __all_virtual_sys_task_status

检查存储层调度的状态:

SELECT * FROM __all_virtual_sys_task_status;

问题排查概述:副本迁移问题排查

副本迁移问题细分步骤
迁入目标端磁盘满

排查有迁移异常的 server:

SELECT * FROM __all_server WHERE block_migrate_in_time > 0 \G临时设置block_migrate_in_time解除block状态:

ALTER system SET migration_disable_time = "600s";

查询磁盘使用空间
迁移过慢问题

查看迁移相关配置项:

server_data_copy_out_concurrency ,该项为单个节点迁出数据的最大并发数

server_data_copy_in_concurrency ,该项为单个节点迁入数据的最大并发数

sys_bkgd_io_low_percentage 该项表示 sys_io_percent 的下限,如果下限太低则可能导 致合并的 I/O 很慢,可以通过适当调大这个值来调大 I/O (检查 I/O 是否达到磁盘瓶颈)

sys_bkgd_net_percentage 该项表示后端网络带宽占用(检查网络配置)
迁移失败问题

确认常见错误码。

检查是否存在硬件问题。

检查内核问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/6304.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

49天精通Java,第24天,Java链表、散列表、HashSet、TreeSet

目录一、链表二、散列表三、HashSet四、TreeSet五、TreeSet常用方法大家好&#xff0c;我是哪吒。 一、链表 从数组中间删除一个元素开销很大&#xff0c;其原因是向数组中插入元素时&#xff0c;此元素之后的所有元素都要向后端移动&#xff0c;删除时也是&#xff0c;数组中…

大厂面试篇--2023软件测试八股文最全文档,有它直接大杀四方

前言 已经到了金三银四的黄金招聘季节了&#xff0c;还在准备面试跳槽涨薪的小伙伴们可以看看本篇文章哟&#xff0c;这里呢笔者就不多说废话了直接上干货&#xff01;答案已整理好&#xff0c;文末拿去即可&#xff01;非常好用&#xff01; 一、字节跳动测试面经篇 1、在搜…

【KNN算法详解(用法,优缺点,适用场景)及应用】

KNN算法介绍 KNN&#xff08;K Near Neighbor&#xff09;&#xff1a;k个最近的邻居&#xff0c;即每个样本都可以用它最接近的k个邻居来代表。KNN算法属于监督学习方式的分类算法&#xff0c;我的理解就是计算某给点到每个点的距离作为相似度的反馈。 简单来讲&#xff0c;…

【工具】Maven

文章目录0.Maven安装&#xff08;不使用IDEA内置&#xff09;1.Maven的作用2.Maven核心概念3.maven目录结构4.仓库5.pom文件5.1 坐标 gav5.2.packaging5.3.依赖5.4.配置属性5.5.build6.Maven生命周期7.junit 单元测试8.插件9.IDEA构建Maven10.创建javase项目11.web工程12.依赖的…

【Linux】初识动静态库/动静态链接

文章目录动静态库的基本原理认识动静态库动静态库的特性手动安装静态库动静态库的基本原理 首先&#xff0c;文件和头文件最终变成一个可执行程序需要经历以下四个步骤&#xff1a; 1&#xff09;预处理&#xff1a;预处理所要完成的有&#xff0c;头文件展开、去注释、宏替换…

【HTML系列】第四章 · 列表和表格

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

【艾特淘】淘宝做爆款的目的是什么?怎么做?

其实在淘宝上面也有很多卖家都想要去打造属于自己店铺的爆款商品。 但是又不知道淘宝做爆款商品的目的是什么&#xff0c;也不知道爆款商品到底应该要怎么做&#xff0c;我马上就来给各位卖家介绍。 我们打造爆款是为了让我们通过爆款赚钱&#xff0c;通过爆款引来的流量带动其…

计算机| 关于CPU的12个知识点(图文详解)

CPU是什么&#xff1f; CPU与计算机的关系就相当于大脑和人的关系&#xff0c;它是一种小型的计算机芯片&#xff0c;通常嵌入在电脑的主板上。 CPU的构建是通过在单个计算机芯片上放置数十亿个微型晶体管来实现。 这些晶体管使它能够执行运行存储在系统内存中的程序所需的计…

JS手写浅拷贝与深拷贝

目录 1、引言 2、深拷贝与浅拷贝介绍 2.1、概念 2.2、实现方式 3、手写代码 1、引言 要了解浅拷贝与深拷贝&#xff0c;首先要知道 堆 和 栈 的概念 堆栈&#xff1a; 就是存放数据的地方&#xff08;不管是定义的数字、字符串、对象还是数组、函数等等&#xff0c;都会在…

学习HM微博项目第10天

步骤&#xff1a;发微博12-表情键盘06-点击表情 -> 发微博13-表情键盘07-插入表情和封装textView -> 发微博14-表情键盘08-长按表情 -> 发微博15-表情键盘09-最近表情 -> 发微博16-表情键盘10-最近表情完善 发微博12-表情键盘06-点击表情 APP的演示动画&#xff…

完全自学C(干货) —— 预处理详解

目录 一&#xff0c;预定义符号 二&#xff0c;#define #define定义的标识符 #define定义宏 # ## 带副作用的宏参数 宏和函数的对比 #undef 三&#xff0c;命令行定义 四&#xff0c;条件编译 五&#xff0c;文件包含 #include 六&#xff0c;其他预处理指令 一&…

搞的谁还不会爬福利美女跳舞视频一样,用我这个方法非常简单。

大家好啊&#xff01;经常听别人说爬虫玩的好&#xff0c;*****&#xff01;其实没有这么恐怖&#xff0c;爬虫你一般都是采集公开的信息&#xff0c;所以不会像网络传言那样&#xff0c;大家只要遵守协议&#xff0c;不会出问题的。 话说学编程语言的应该都是男孩子哈&#xf…

不解释

&#xff08;1&#xff09;业务线下 VS 线上大陆 VS 全球整合-国际规则合规企业 VS 产业极速联动-社会化资源调度&#xff08;2&#xff09;手段P&#xff1a;人工预测 VS 时序预测D&#xff1a;管理者人工指派任务 VS 运筹学最优求解C&#xff1a;人工检查监督审批工作流 VS …

第十五章 镜像架构和规划 - 示例镜像架构和网络配置

文章目录第十五章 镜像架构和规划 - 示例镜像架构和网络配置示例镜像架构和网络配置在单个数据中心、机房或校园内镜像配置简单故障转移对具有 DR 的故障转移配对和报告 Ayncs 同构连接第十五章 镜像架构和规划 - 示例镜像架构和网络配置 示例镜像架构和网络配置 本节描述并说…

Python用re模块使用正则表达式

Python正则表达式是一种强大的工具&#xff0c;用于在字符串中查找和匹配特定模式的文本。在Python中&#xff0c;可以使用re模块来使用正则表达式。正则表达式是一种模式匹配语言&#xff0c;可以在文本中寻找特定模式的字符串。正则表达式可以用于验证输入&#xff0c;搜索和…

MYSQL——美团面试题

MYSQL——美团面试题 2023/3/27 美团二面 题目描述 Create table If Not Exists courses (student varchar(255), class varchar(255));insert into courses (student, class) values (A, Math); insert into courses (student, class) values (B, English); insert into co…

《C++那些事》之开启你的BenchMark项目

《C那些事》之开启你的BenchMark测试0.导语本节目标&#xff1a;完成一个BenchMark小项目!在平时开发中&#xff0c;如何测试自己的接口性能呢&#xff1f;C里面如何快速搭建一个BenchMark测试框架呢&#xff1f;本节将Step By Step开启BenchMark入门的第一课。1.项目结构我们以…

灵动微基于 MM32SPIN040C 为主控的无感方波水泵应用方案

水泵是一种运输液体或增压液体的机器。将原动机的机械能或其他外部动能量传递给液体&#xff0c;提高液体动能&#xff0c;主要用于运输含水、油、酸碱液、乳化液、悬乳液和液体金属的液体。 介绍一款适用于水泵的32位单片机——MM32SPIN040C。 RAMSUN推荐一款应用于水泵的MC…

从零开始实现一个C++高性能服务器框架----协程调度模块

此项目是根据sylar框架实现&#xff0c;是从零开始重写sylar&#xff0c;也是对sylar丰富与完善 项目地址&#xff1a;https://gitee.com/lzhiqiang1999/server-framework 简介 项目介绍&#xff1a;实现了一个基于协程的服务器框架&#xff0c;支持多线程、多协程协同调度&am…

倒计时组件:可视化如何自定义目标时间 / 数字倒数

倒计时组件支持通过自定义目标时间或倒数数字&#xff0c;在报表和大屏中展示时间倒数和数字倒数。 下面以Sugar BI为例&#xff0c;为大家展示 倒计时展示模式 倒计时组件提供「时间倒数」和「数字倒数」两种展示模式&#xff0c;效果如下&#xff1a; 默认为「时间倒数」模…
最新文章