暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

Halo数据库性能诊断与调优(1)

原创 Halo Tech 2024-03-05
244

1.HWR扩展的概念

HWR可以帮助我们找出Halo数据库中大多数资源消耗活动。
扩展是基于Halo的标准统计视图。它在指定时间生成快照,并且提供html格式来解释快照之间的统计数据。假设几个小时前报告数据库性能下降,定期采样快照可以帮助查找过去时间大多数资源密集型活动。我们可以在两个示例之间生成一个报告,查看数据库的负载配置文件以限制性能问题周期。
它是用纯pl/ pgsql编写的,不需要任何外部库或软件。通过调用take_sample()函数获取示例。我们需要使用 cron来安排作业。
每次获取样本时,都会调用pg_stat_statements_reset(),来保证不会因为达到pg_stat_statements.max而丢失语句。
安装在一个集群中的 HWR 能够从其他集群(称为服务器)收集统计信息。我们只需要定义一些服务器,提供名称和连接字符串,并确保可以与所有服务器的所有数据库建立连接。比方说,我们可以从主服务器或任何其他服务器跟踪备用数据库的统计信息。安装扩展后,将根据HWR所在的主机名自动创建服务器。

2.前置条件

HWR数据库前置条件:HWR扩展依赖于扩展plpgsql和dblink。

服务器前置条件:服务器群集的唯一强制性要求是能够使用提供的服务器连接字符串从HWR 数据库进行连接。所有其他要求都是可选的,但它们可以提高收集的统计信息的完整性。

设置以下统计信息收集器参数:

track_activities = o 
track_counts = on
track_io_timing = on
track_wal_io_timing = on      # Since Hao 14
track_functions = all/pl

如果需要报表中的语句统计信息,则服务器连接字符串中提到的数据库必须配置pg_stat_statements扩展名。设置pg_stat_statements参数以满足需求:

pg_stat_statements.max - 此参数的低设置可能会导致在获取样本之前清除某些语句统计信息。如果pg_stat_statements.max值似乎过小,报告会发出警告。

pg_stat_statements.track = 'top' - 在 Halo 14之前,所有值都会影响报告中与报表相关的部分的 %Total 字段的准确性。

3.HWR的安装

步骤1 创建扩展

psql
# create schema hwr;
# create extension hwr schema hwr cascade;
# \dx

所有对象都将在HWR中创建。

在postgresql.conf中配置参数:

shared_preload_libraries = 'pg_stat_statements' # (change requires restart)

步骤2 准备脚本hwr_take_sample.sh

$ cd $HALO_HOME/admin/hwr
$ cp hwr_take_sample.sh.sample hwr_take_sample.sh

修改hwr_take_sample.sh中的HALO_HOME、PGHOST环境变量。(根据实际路径配置环境变量) 

$ chmod 750 hwr_take_sample.sh

步骤3 为用户Halo启用crontab

如果未为用户Halo启用 cron,以 root 用户身份运行以下命令

$ echo halo >> /etc/cron.allow

步骤4 将hwr_take_sample.sh添加到crontab

编辑用户的crontab:

$ crontab -e

列出用户的crontab

$ crontab -l

例如每小时:

00 * * * * <HALO_HOME>/admin/hwr/hwr_take_sample.sh > <HALO_HOME>/admin/hwr/hwr_take_sample.sh.log 2>&1
Change <HALO_HOME> to the real path.

根据需求修改工作频率。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论