方法一 查看日志
查看数据库日志ERROR级别以上日志
1.先查找数据目录的位置
可通过ps f -u om bm查看数据目录,或者gs_om -t status --detail查看数据目录
比如数据目录为/var/lib/opengauss/data
2.再查找数据库日志目录
cat /var/lib/opengauss/data/postgresql.conf|grep log_directory
例如默认日志目录为
log_directory = ‘pg_log’
3.从日志目录过滤ERROR级别以上日志
如果日志文件名是按yyyy-mm-dd,则可只查看当天的日志
cat /var/lib/opengauss/data/pg_log/postgresql-2021-04-08*.log |grep -E ‘ERROR|PANIC’ |more
方法二 综合诊断
1.先排查常见问题
1.1 查看集群的状态是否都为normal正常状态(是否有异常节点,比如同步节点挂了等)
gs_om -t status --detail
1.2 查看流复制延迟(是否有网络问题)
或者进入主库查看系统视图pg_stat_replication的查看sender_sent_location发送端发送日志位置与receiver_*_location接收端日志是否有延迟
select * from pg_stat_replication ;
1.3 WAL及归档状态文件及磁盘空间检查
1.4 查看连接状态,是否有长事务,活跃连接数占比
select state,count(1) from pg_stat_activity group by 1;
2.查看系统资源使用情况
2.1 使用top命令查看各节点cpu使用情况
按“1”键,可查看每个CPU核的使用率,可分别在每个节点依次查看,判断是主节点读写还是从节点读压力大。
主要关注cpu使用率。
2.2 使用top -H -p pid查找omm用户进程内占用cpu百分比比较高的线程
pid可通过ps f -u omm查看进程获取
2.3 系统级的时间消耗细分。判断是否整个系统是否存在负载,网络,IO,CPU上的瓶颈
select stat_name,value/1000 as "val(ms)" from dbe_perf.instance_time order by 2 desc;
2.4 系统级内存
select memorytype as type,memorymbytes as "val(MB)" from dbe_perf.memory_node_detail where memorymbytes>0;
2.5 共享内存使用率
select contextname ,parent,totalsize,freesize,usedsize from dbe_perf.shared_memory_detail where level=1 and totalsize>0 order by usedsize/totalsize desc;
2.6 系统级session
postgres=# \dv dbe_perf.session*
List of relations
Schema | Name | Type | Owner | Storage
----------+------------------------+------+-------+---------
dbe_perf | session_cpu_runtime | view | omm |
dbe_perf | session_memory | view | omm |
dbe_perf | session_memory_detail | view | omm |
dbe_perf | session_memory_runtime | view | omm |
dbe_perf | session_stat | view | omm |
dbe_perf | session_stat_activity | view | omm |
dbe_perf | session_time | view | omm |
(7 rows)
通过上面一些session级视图可分析如下信息
- 会话级负载强度,逻辑/物理读写强度,排序活动等,用于甄别出负载强度高,使用资源多的会话
- 会话级时间细分,用于甄别出不同时间维度上session的消耗
- 会话级总内存和内存上下文分配/使用,可以定位单个session在特性级上的内存问题
- 获取实时系统活跃会话列表,包括会话基本信息,会话事务,语句,等待事件,会话状态(active,idle等),
用于分析当前系统活跃用户的活动信息,比如从语句的开始时间判断当前会话是否一致阻塞在某一个语句,
从等待事件可以判断某一个或者多数会话阻塞在哪个事件或者节点(分布式场景)
方式三 根据报错信息定位源码
1.进入opengauss-server源码目录
cd /opt/openGauss-server/src
2.根据报错信息关键字进行搜索
grep -r "Instance reset time is different" -w --include="*.cpp"
搜索结果如下
gausskernel/cbb/instruments/wdr/generate_report.cpp: ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), errmsg(“Instance reset time is different”)));
3.再根据源码去分析问题
最后修改时间:2022-05-11 15:35:38
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




