首页 > 其他分享 >OceanBase-OCP-bug之 fgc问题处理

OceanBase-OCP-bug之 fgc问题处理

时间:2024-08-30 09:25:51浏览次数:10  
标签:容器 OceanBase server ocp OCP docker bug select

一、遇到问题时,处理过程

关于调整ocp-server的jvm大小解释:1、在docker容器内设置export JVM_HEAP_SIZE=xxxx,然后重启对应的ocp-server进程(/home/admin/ocp-server/bin/ocp-server),注意这里的大小不要超过docker容器的大小上限。2、在调整完ocp容器的内存大小之后(docker update --memory=60g <container_id_or_name>),重启ocp容器,容器内的ocp-server进程的jvm大小也会跟着变化,这个原因还是因为/home/admin/ocp-server/bin/ocp-server这个问题里面这个文件定义了ocp-server启动时的大小,如果变量JVM_HEAP_SIZE没有设置的话,它是根据当前系统可用内存的7/10来分配。


docker  ps 
docker  stats

查看容器内存CPU使用情况:
docker stats


【1】 、ocp不定期自动挂掉-fgc问题 处理情况1============================================

【处理】:

修改缓冲池资源的

先添加ocp 容器的内存资源,
docker update --memory 36G --memory-swap -1  {CONTAINER_ID}, 现在是20G ,可以先加到36G, 

然后在  ocp_meta租户的ocp库 里面执行下这个 sql,
 replace into config_properties(`key`, value) 
 values ('ocp.alarm.detect.executor.core_pool_size', 10) ,('ocp.alarm.detect.executor.max_pool_size', 20);  

加资源三个节点都要加,然后再重启下ocp ,我们再观察下。   麻烦再把 ocp docker 里/home/admin/logs/ocp , gc开头的日志拿一下


有空可以到 ocp 的容器里切换到  admin 用户再执行下 jstat -gcutil <ocp-server-pid> 看下 FGC 
FGC如果是0那就没有什么问题,如果还是有数值,麻烦再联系下我们,


1、
ocp 的容器里切换到  admin 用户再执行下 jstat -gcutil <ocp-server-pid> 看下 FGC [19613 是OCP的进程ID的意思]
ps  -ef  |  grep  ocp 
jstat  -gcutil  19613
stats 

看下延迟的store是否有gc,oms docker里
jstat -gcutil `ps -ef | grep storexxxx | grep java | awk '{print $2}'` 3000


原因分析:
客户环境: ocp_monitor租户 4c16g,这个设置偏小,
影响的主要是内存,CPU 应该对 OCP 的影响不太大,可以看下容器的 load
top 里面就有:机器的 load1、load5、load15 ,哪个进程占用大的内存。
尝试 meta 集群需要加资源,
尝试 ocp上调整unit资源是不是可以解决问题。


工单总结:
1、增加客户OCP内存由20G ——>  36G ,OCP资源观察很多天相对运行稳定。
2、增加cpu的话从8c增加16C,并且 OCP  扩大 64G 后重启 java 进程。
3、建议暂时把awr功能关了,待下个版本修复。这个不确定具体时间,研发老师现在规划还没完整的出来
如果开启awr会导致fcg,那这可能还需要优化,可以建议关掉这个功能,等后续版本优化好了再升级ocp,打开对应功能。

目前,客户环境负载较高,未发生故障和告警,运行稳定但是未能根本解决问题,1是客户增大资源配置,2是等新版解决BUG升级。



问题就是增加租户副本的时候会卡住并失败,重试才能成功,我怀疑是不是监控采集太频繁导致FGC让任务失败,具体的麻烦帮忙看一下


在 metadb 里执行下这个 sql ,里面可以查下管理的规模
select count(1) from ob_cluster;
select count(1) from ob_tenant;
select count(1) from compute_host;

select * from task_definition where name = 'Collect cluster snapshot'
select `key`, value from config_properties where `key` like '%ocp.alarm.detect.executor%';


ocp-server 的容器配置需要看下容器的信息,或者你在镜像里面执行下 ps -ef | grep java 
replace into config_properties(`key`, value) values ('ocp.alarm.detect.executor.core_pool_size', 20) ,('ocp.alarm.detect.executor.max_pool_size', 30);

执行下这个 sql,然后挨个重启下 ocp 的镜像,之后再观察下是否还有 fgc 吧



【2】 、ocp不定期自动挂掉-fgc问题 处理情况2============================================
处理办法:
1、ocp-server 的容器配置需要看下容器的信息,执行下 ps -ef | grep java ,再进入容器中,运行:jstat -gcutil <pid>   ,pid 就是 java 的进程,观察 fgc 使用情况是否很高。
2、看下 ocp-server 的资源分配了多少,管理了多少集群、租户、主机规模
metadb 下执行以下sql:

select count(1) from ob_cluster;
select count(1) from ob_tenant;
select count(1) from compute_host;
select * from task_definition where name = 'Collect cluster snapshot'
select `key`, value from config_properties where `key` like '%ocp.alarm.detect.executor%';

修改执行下这个 sql,将两个参数再调小:
replace into config_properties(`key`, value) values ('ocp.alarm.detect.executor.core_pool_size', 20) ,('ocp.alarm.detect.executor.max_pool_size', 30);

然后重启下各个 ocp 的镜像,之后再观察下是否还有 fgc 


原因:
OCP有些任务比较消耗资源,告警每分钟会并发 100 (默认值)个线程查询监控数据,将两个参数再调小


观察验证:
root@ocp_metna
use  ocp  
metadb执行
select count(1) from ocp_exporter_address where status='inactive'; 
select count(1) from ocp_exporter_address where status='active'; 
点击一下右上角的实时按钮,看OCP界面是否有数据

 

二、再说,故障现象

现象1:

 

现象2:

 

标签:容器,OceanBase,server,ocp,OCP,docker,bug,select
From: https://www.cnblogs.com/bayaim/p/18387999

相关文章

  • 解决lazarus版本dbgrideh在linux粘贴重复的Bug
    dbgrideh在linux存在粘贴重复的Bug,不啰嗦,直接给解决方法:1.打开EhLib.VCL11.1xxx/Lazarus/Lib/DBAxisGridsEh.pas2.定位到functionTDBAxisGridInplaceEdit.DoPaste(varMessage:TMessage):Boolean; 添加红字部分代码,重新编译应用就可以。AAxisBar:=Grid.AxisBa......
  • 一个小小空格问题引起的bug
    程序员会遇到一种情况,一个bug排查到最后是由一个很小的问题导致的。在昨天的日常搬砖中遇到一个问题,耽搁了我大半天的时间,最后查明原因让我很无语。首先介绍一下背景,我是做算法模型训练,目前手上的工作是迭代一个算法,添加最新的数据集训练出一个精度更好的模型。拿到标注好的xml......
  • 【优技教育】Oracle 19c OCP 082题库(第3题)- 2024年修正版
    考试科目:1Z0-082考试题量:90通过分数:60%考试时间:150min本文为(CUUG原创)整理并解析,转发请注明出处,禁止抄袭及未经注明出处的转载。原文地址:http://www.cuug.com/index.php?s=/home/article/detail/id/3386.html第3题:3、Choosetwo.Whichistrueaboutthe&and&&prefi......
  • 【优技教育】Oracle 19c OCP 082题库(第1题)- 2024年修正版
    考试科目:1Z0-082考试题量:90通过分数:60%考试时间:150min本文为(CUUG原创)整理并解析,转发请注明出处,禁止抄袭及未经注明出处的转载。原文地址:http://www.cuug.com/index.php?s=/home/article/detail/id/3385.html第1题:1、Choosetwo.Youexecutethesecommands:CREATETAB......
  • OceanBase应用断链无cs_id分析
    今天是第一次写博,在OB工作也有一段时间了,国产数据库相对于oracle,mysql这些可能在排查难度方面可能是较高,但是也有一定的技巧。每天处理过的应用断连问题也有一定的量,全链路诊断其实是一个比较复杂的过程,在可能无法判断的时候,抓包是一个很重要的手段,但是断链一般是偶现,抓包的困难......
  • esp-idf vscode debug command 'espIdf.getXtensaGdb' not found
    esp32idfvscodedebug错误vscode中配置文件采用的是正点原子的,调用gdb的时候,提示报错,找不到相应的命令launch.json文件中gdb的配置如下{"version":"0.2.0","configurations":[ { "name":"GDB", "type":"cppdbg", &......
  • delphi debug 输出
    在Delphi中,你可以使用OutputDebugString函数将调试信息发送到调试器。这个函数是WindowsAPI的一部分,可以在任何使用WindowsAPI的Delphi应用程序中使用。以下是一个简单的例子,展示如何使用OutputDebugString来输出调试信息:usesWindows;procedureTForm1.Button1Click(Se......
  • OceanBase-合并问题-工单处理常用SQL1
     OceanBase-合并问题-工单处理常用SQL1全量合并-------------------------------------------------------------OB默认是增量合并【发起的指定表的全量合并】1、修改表的模式,全量合并https://www.oceanbase.com/knowledge-base/oceanbase-database-2000000102......
  • OceanBase-【OBCP】认证-第二章 OB 存储引擎高级技术
    第二章OB存储引擎高级技术内存管理内存数据落盘策略-合并和转储LSMTree技术简介LSMTree(TheLog-StructuredMerge-Tree)核心特点是利用顺序写来提高写性能◼将某个对象(Partition)中的数据按照“key-value”形式在磁盘上有序存储(SSTable)◼数据更新先记录在MemStor......
  • OceanBase-OB备份异地恢复流程
    OB备份异地恢复流程——2023年5月9日一、【白屏操作】1、确定当前备份的OB版本: 2、新建备份目录授权(备份到本地目录为例):mkdir /obbackup/chown -R admin.admin /obbackup/保证能解析成功: 3、点击“备份”,查询操作系统的目录结构:4、拷贝租户层面数据文......