统计信息收集器没有响应/Stats collector is not responding

问题现象:

kingbase数据库日志提示:统计信息收集器没有响应/Stats collector is not responding

示例Kingbase日志输出:

LOG: using stale statistics instead of current ones because stats collector is not responding
日志:由于统计信息收集器无响应而使用旧的统计信息来替代当前的统计信息.

原因:

场景1.统计信息收集器“stats collector”进程内部 UDP 连接连接超时(比如防火墙屏蔽的UDP协议),没有及时写入新的统计信息,导致过时的统计信息和其他潜在问题。
场景2.Kingbase数据日志持续大量的出现此信息,此场景下说明系统负载较高,资源不够用.

建议操作:

场景1,偶尔在数据库日志出现此问题,基本不用担心.保持关注就行.
场景2:统计收集器需要频繁收集统计信息,在高负载期间可能会导致上述的日志信息。
如果系统负载较高,系统资源紧张不够用,可以考虑将stats_temp_directory参数设置到基于 RAM 的文件系统上.
#需要关注内存的大小
1.kingbase.conf设置stats_temp_directory参数,需要重启数据库服务器.stats_temp_directory='/dev/shm'
2.手动mkdir 目录,使用mount挂载为tmpfs格式.tmpfs 的主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的。 [root@postgres ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.1G 0 1.1G 0% /dev
tmpfs tmpfs 1.1G 8.2k 1.1G 1% /dev/shm
tmpfs tmpfs 1.1G 9.4M 1.1G 1% /run
tmpfs tmpfs 1.1G 0 1.1G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 19G 15G 3.9G 80% /
/dev/sda1 xfs 1.1G 212M 852M 20% /boot
/dev/mapper/datavg-datalv xfs 11G 9.7G 1.1G 90% /dbdata
tmpfs tmpfs 210M 0 210M 0% /run/user/0 mount -t tmpfs -o size=1G tmpfs /stat_test/ [root@postgres ~]# mkdir /stat_test
[root@postgres ~]# mount -t tmpfs -o size=1G tmpfs /stat_test/
[root@postgres ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 984M 0 984M 0% /dev
tmpfs tmpfs 1000M 8.0K 1000M 1% /dev/shm
tmpfs tmpfs 1000M 9.0M 991M 1% /run
tmpfs tmpfs 1000M 0 1000M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 14G 3.6G 80% /
/dev/sda1 xfs 1014M 203M 812M 20% /boot
/dev/mapper/datavg-datalv xfs 10G 9.0G 1.1G 90% /dbdata
tmpfs tmpfs 200M 0 200M 0% /run/user/0
tmpfs tmpfs 1.0G 0 1.0G 0% /stat_test 然后kingbase.conf设置stats_temp_directory='/stat_test'

设置stats_temp_directory='/dev/shm',

[kingbase@postgres ora_data]$ ksql -Usystem -dtest
ksql (V8.0)
输入 "help" 来获取帮助信息. test=# show stats_temp_directory ; stats_temp_directory
---------------------- /dev/shm
(1 行记录) --查看/dev/shm目录,有文件生成
[kingbase@postgres shm]$ pwd
/dev/shm
[kingbase@postgres shm]$ ls -l
总用量 48
-rw------- 1 kingbase kingbase 3892 1月 17 11:05 db_0.stat
-rw------- 1 kingbase kingbase 29073 1月 17 11:05 db_16269.stat
-rw------- 1 kingbase kingbase 639 1月 17 11:05 global.stat
-rw------- 1 kingbase kingbase 7408 1月 17 11:02 kingbase.94006976 --查看sys_stat_tmp目录
[kingbase@postgres sys_stat_tmp]$ ls -l
总用量 4
-rw------- 1 kingbase kingbase 423 1月 17 11:03 pgss_query_texts.stat
--查看sys_stat目录
[kingbase@postgres sys_stat]$ pwd
/home/kingbase/ora_data/sys_stat
[kingbase@postgres sys_stat]$ ls -l
总用量 0 --正常关闭数据库
[kingbase@postgres sys_stat]$ sys_ctl -D /home/kingbase/ora_data/ stop
waiting for server to shut down.... done
server stopped --查看sys_stat目录
--正常关闭数据库会将/dev/shm下的统计信息文件拷贝到sys_stat目录持久保存.
[kingbase@postgres sys_stat]$ pwd
/home/kingbase/ora_data/sys_stat
[kingbase@postgres sys_stat]$ ls -l
总用量 48
-rw------- 1 kingbase kingbase 3892 1月 17 11:08 db_0.stat
-rw------- 1 kingbase kingbase 29073 1月 17 11:08 db_16269.stat
-rw------- 1 kingbase kingbase 639 1月 17 11:08 global.stat
-rw------- 1 kingbase kingbase 19 1月 17 11:08 instance.stat
-rw------- 1 kingbase kingbase 1915 1月 17 11:08 sys_stat_statements.stat --启动数据库
[kingbase@postgres sys_stat]$ sys_ctl -D /home/kingbase/ora_data/ start
waiting for server to start....2023-01-17 11:10:18.739 CST [25116] LOG: sepapower extension initialized
2023-01-17 11:10:18.744 CST [25116] LOG: starting KingbaseES V008R006C006B0021 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46), 64-bit
2023-01-17 11:10:18.745 CST [25116] LOG: listening on IPv4 address "0.0.0.0", port 54321
2023-01-17 11:10:18.745 CST [25116] LOG: listening on IPv6 address "::", port 54321
2023-01-17 11:10:18.751 CST [25116] LOG: listening on Unix socket "/tmp/.s.KINGBASE.54321"
2023-01-17 11:10:18.884 CST [25116] LOG: redirecting log output to logging collector process
2023-01-17 11:10:18.884 CST [25116] HINT: Future log output will appear in directory "sys_log".
done
server started
[kingbase@postgres sys_stat]$
--sys_stat目录下无文件
[kingbase@postgres sys_stat]$ pwd
/home/kingbase/ora_data/sys_stat
[kingbase@postgres sys_stat]$ ls -l
总用量 0 --启动数据库后加载统计信息临时文件到/dev/shm目录 [kingbase@postgres sys_stat]$ ls -l /dev/shm
总用量 16
-rw------- 1 kingbase kingbase 3892 1月 17 11:10 db_0.stat
-rw------- 1 kingbase kingbase 639 1月 17 11:10 global.stat
-rw------- 1 kingbase kingbase 7408 1月 17 11:10 kingbase.166558517 [kingbase@postgres sys_stat]$ pwd
/home/kingbase/ora_data/sys_stat
[kingbase@postgres sys_stat]$ ls -l

关于统计信息收集器:

1.统计信息收集器可以对表和索引的访问计数,计数可以按磁盘块和个体行来进行。
2.跟踪每个表中的总行数、每个表的清理和分析动作的信息。
3.统计调用用户定义函数的次数以及在每次调用中花费的总时间。
4.会话的每个后端都是Kingbase中的一个单独进程,在负载较高的系统收集统计信息并不是一件容易的事。
5.每个后端进程将(通过UDP套接字进行通信)有关他们所做的活动的信息发送到单个"stats collector"进程。
6.Kingbase数据库通过与“stats collector”进程的内部 UDP 连接,将每个表的统计信息和其他内部指标写入目录统计表。

类别:服务器事件(Server Events)

Kingbase数据库后台进程:统计信息收集器进程stats collector

kingbase: stats collector 进程为统计信息收集器进程
[kingbase@postgres ~]$ ps -ef|grep kingbase | grep -v grep
root 20288 20157 0 09:18 pts/1 00:00:00 su - kingbase
kingbase 20290 20288 0 09:18 pts/1 00:00:00 -bash
kingbase 20708 1 0 09:26 ? 00:00:01 /home/kingbase/V8R6C6B21/ES/V8/KESRealPro/V008R006C006B0021/Server/bin/kingbase -D /home/kingbase/ora_data
kingbase 20710 20708 0 09:26 ? 00:00:00 kingbase: logger
kingbase 20713 20708 0 09:26 ? 00:00:00 kingbase: checkpointer
kingbase 20714 20708 0 09:26 ? 00:00:00 kingbase: background writer
kingbase 20715 20708 0 09:26 ? 00:00:00 kingbase: walwriter
kingbase 20716 20708 0 09:26 ? 00:00:00 kingbase: autovacuum launcher
kingbase 20717 20708 0 09:26 ? 00:00:00 kingbase: archiver
kingbase 20718 20708 0 09:26 ? 00:00:00 kingbase: stats collector
kingbase 20719 20708 0 09:26 ? 00:00:00 kingbase: ksh writer
kingbase 20720 20708 0 09:26 ? 00:00:00 kingbase: ksh collector
kingbase 20721 20708 0 09:26 ? 00:00:00 kingbase: kwr collector
kingbase 20722 20708 0 09:26 ? 00:00:00 kingbase: job bgworker
kingbase 20723 20708 0 09:26 ? 00:00:00 kingbase: logical replication launcher
kingbase 21990 20290 0 10:00 pts/1 00:00:00 ps -ef

统计信息收集配置参数:

track_activities:允许监控当前被任意服务器进程执行的命令。
track_counts:控制是否收集关于表和索引访问的统计信息。
track_functions:启用对用户定义函数使用的跟踪。
track_io_timing:启用对块读写次数的监控。 test=> show track_activities;
track_activities
------------------
on
(1 行记录)
test=> set track_activities to off;
ERROR: permission denied to set parameter "track_activities" test=# show track_activities;
track_activities
------------------
off
(1 行记录) test=# set track_activities to on;
SET 参数设置在kingbase.conf中,会应用于所有服务器进程.可以在单个会话中使用SET命令打开或关闭(只有超级用户允许使用SET来改变这些参数)。

统计收集器通过临时文件将收集到的信息传送给其他Kingbase进程。这些文件被存储在参数stats_temp_directory指定的目录中,默认是sys_stat_tmp.

test=# show stats_temp_directory ;

 stats_temp_directory
---------------------- sys_stat_tmp
(1 行记录) [kingbase@postgres sys_stat_tmp]$ pwd
/home/kingbase/ora_data/sys_stat_tmp
[kingbase@postgres sys_stat_tmp]$ ls -l *
-rw------- 1 kingbase kingbase 3892 1月 17 10:20 db_0.stat
-rw------- 1 kingbase kingbase 29073 1月 17 10:20 db_16269.stat
-rw------- 1 kingbase kingbase 639 1月 17 10:20 global.stat
-rw------- 1 kingbase kingbase 19 1月 17 10:06 instance.stat
-rw------- 1 kingbase kingbase 1584 1月 17 10:19 pgss_query_texts.stat

服务器正常关闭时,统计数据会拷贝sys_stat_tmp目录的副本永久的存储在sys_stat目录中,这样在服务器重启后统计信息能被正常的加载访问。当服务器启动异常故障需要执行恢复时(例如立即关闭、服务器崩溃以及时间点恢复之后),所有统计计数器会被重置。

[kingbase@postgres sys_stat]$ pwd
/home/kingbase/ora_data/sys_stat
[kingbase@postgres sys_stat]$ ls -l
总用量 52
-rw------- 1 kingbase kingbase 3892 1月 17 10:23 db_0.stat
-rw------- 1 kingbase kingbase 29073 1月 17 10:23 db_16269.stat
-rw------- 1 kingbase kingbase 639 1月 17 10:23 global.stat
-rw------- 1 kingbase kingbase 19 1月 17 10:23 instance.stat
-rw------- 1 kingbase kingbase 4852 1月 17 10:23 sys_stat_statements.stat

KingbaseES 统计信息收集器没有响应问题分析的更多相关文章

  1. Stats collector is not responding 统计信息收集器没有响应

    统计信息收集器没有响应/Stats collector is not responding 问题现象: kingbase数据库日志提示:统计信息收集器没有响应/Stats collector is n ...

  2. OstrichNet 简易统计信息收集工具

    Ostrich 是twitter用于监控服务器性能的一个scala库,项目地址https://github.com/twitter/ostrich, 主要功能是收集.展示统计信息, 同时也提供了关闭服 ...

  3. 10G之后统计信息收集后为什么执行计划不会被立马淘汰

    在10G之前,使用DBMS_STATS收集统计信息将会导致与此对象相关的游标失效,下次执行此 的时候将会进行HARD PARSE,除非收集的时候NO_INVALIDATE设置为TRUE. 由于硬解析会 ...

  4. Oracle 统计信息收集

    官网网址参考: https://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_stats.htm#CIHBIEII https://docs.ora ...

  5. [统计信息系列7] Oracle 11g的自动统计信息收集

    (一)统计信息收集概述 在Oracle 11g中,默认有3个自动任务,分别是:自动统计信息收集.SQL调优顾问.段空间调整顾问,查看方法如下: SQL> SELECT CLIENT_NAME,T ...

  6. Mysql 碎片整理与统计信息收集

    ======重新收集统计信息======= 1.分析和存储表的关键字分布 analyze table table_name; analyze 用于收集优化器的统计信息.和tuning相关:对 myis ...

  7. 11g新特性-如何禁用自动统计信息收集作业

    一.11g中auto stats gather job被集成到了auto task中. SQL> select client_name,status from DBA_AUTOTASK_CLIE ...

  8. python 信息收集器和CMS识别脚本

    前言: 信息收集是渗透测试重要的一部分 这次我总结了前几次写的经验,将其 进化了一下 正文: 信息收集脚本的功能: 1.端口扫描 2.子域名挖掘 3.DNS查询 4.whois查询 5.旁站查询 CM ...

  9. CoreCLR源码探索(四) GC内存收集器的内部实现 分析篇

    在这篇中我将讲述GC Collector内部的实现, 这是CoreCLR中除了JIT以外最复杂部分,下面一些概念目前尚未有公开的文档和书籍讲到. 为了分析这部分我花了一个多月的时间,期间也多次向Cor ...

  10. Python黑客——快速编写信息收集器

    i春秋作家:大木瓜 环境:Python 3模块:LxmlRequestBeautifulsoup开始:首先看一下目标站: http://gaokao.chsi.com.cn/gkxx/zszcgd/d ...

随机推荐

  1. Java集合框架学习(十五) ListIterator接口详解

    ListIterator介绍 一个为list对象设计的迭代器,允许开发人员在2个方向上迭代,修改和获得list迭代位置. ListIterator 没有所谓当前元素. 它的游标位置总是位于previo ...

  2. 3分钟总览微软TPL并行编程库

    有小伙伴问我每天忽悠的TPL是什么?☹️ 这次站位高一点,严肃讲一讲. 引言 俗话说,不想开飞机的程序员不是一名好爸爸:作为微软技术栈的老鸟,一直将代码整洁之道奉为经典, 优秀的程序员将优雅.高性能的 ...

  3. Java开发技巧杂记

    杂记一 创建项目的spring initializr,要求是创建spring boot3.0,且不在支持java8语言,且要求语言大于17,所以创建项目时,无法创建srping2.0项目了:如果要创建 ...

  4. win32-EnumChildWindows的使用

    #include <Windows.h> #include <iostream> #include <string> static BOOL CALLBACK en ...

  5. 麒麟系统开发笔记(四):从Qt源码编译安装之编译安装QtCreator4.8.1,并配置编译测试Demo

    前言   本篇紧接上一篇,上一篇已经从Qt源码编译了Qt,那么Qt开发的IDE为QtCreator,本篇从源码编译安装QtCreator,并配置好构建套件,运行Demo并测试.   QtCreator ...

  6. 【Azure Key Vault】Key Vault能不能生成DigiCert证书?能不能自动 Rotate 证书呢?

    问题描述 因为Azure Key Vault服务上保管的证书可以轻松的与其他Azure服务集成使用,所以需要知道 Key Vault 能不能生成 DigiCert 证书?能不能自动 Rotate 证书 ...

  7. 【Azure 应用服务】应用代码中需要使用客户端证书访问服务接口,部署在应用服务后报错不能找到证书(Cannot find the X.509 certificate)

    问题描述 在应用中,需要访问另一个服务接口,这个接口需要使用客户端证书进行认证.在代码中使用 System.Security.Cryptography.X509Certificates 加载Windo ...

  8. 【Azure 应用程序见解】通过无代码方式在App Service中启用Application Insights后,如何修改在Application Insights中显示的App Service实例名呢?

    问题描述 在App Service中,可以非常容易的启动Application Insights服务.默认情况中,在Application Insights中查看信息时候,其中的对象名称默认为App ...

  9. 批量删除mysql库中数据

    -- 查询构建批量删除表语句(根据数据库名称) select concat('delete from ', TABLE_NAME, ' where org_id = "<条件id> ...

  10. spring重点后置处理器

    1. DefaultListableBeanFactory的作用: 默认实现了ListableBeanFactory和BeanDefinitionRegistry接口,基于bean definitio ...