排查 PostgreSQL 性能压测结果不理想

news/2024/7/9 22:44:39 标签: postgresql, 数据库

排查思路

要排查 PostgreSQL 性能压测结果不理想的问题,可以采取以下步骤:

  1. 确认测试环境是否符合要求,包括硬件配置、软件版本、网络带宽等。如果硬件配置不足、软件版本过低、网络带宽不足等,都可能导致性能瓶颈。

  2. 确认测试数据是否真实、准确、充分。测试数据应当具有代表性,包括数据量、数据类型、数据结构等。

  3. 使用 PostgreSQL 自带的性能分析工具,如 pg_stat_statements、pg_stat_activity 等,对数据库进行监控和分析,查看是否存在慢查询、死锁等问题。

  4. 使用系统监控工具,如 top、vmstat、iostat 等,对系统资源的使用情况进行监控和分析,查看是否存在 CPU、内存、磁盘等资源瓶颈。

  5. 调整 PostgreSQL 的配置参数,如 shared_buffers、work_mem、max_connections 等,根据测试结果进行优化。

  6. 使用第三方性能分析工具,如 pgBadger、pgCluu 等,对 PostgreSQL 进行更深入的性能分析和优化。

总之,要排查 PostgreSQL 性能压测不上去的问题,需要综合考虑多个方面的因素,进行全面、系统的分析和优化。

性能报告

在 Oracle 数据库中,有一个名为 AWR(Automatic Workload Repository)的特性,可以自动收集数据库的性能数据,并生成报告,用于分析数据库的性能瓶颈和优化方案。

而在 PostgreSQL 中,没有类似 AWR 的自动性能报告功能。不过,PostgreSQL 提供了一些性能分析工具,如 pg_stat_statements、pg_stat_activity、pg_top 等,可以用于监控和分析数据库的性能数据。

此外,还有一些第三方工具,如 pgBadger、pgCluu 等,可以生成 PostgreSQL 的性能报告,提供更全面、详细的性能分析和优化建议。

需要注意的是,这些工具都需要手动运行,并且需要对其输出结果进行分析和解释,因此需要一定的专业知识和经验才能充分利用这些工具进行 PostgreSQL 性能优化。

pg_stat_statements、pg_stat_activity、pg_top 使用方法

这里简单介绍一下 PostgreSQL 的几个常用性能分析工具的使用方法:

1. pg_stat_statements

pg_stat_statements 是一个内置的性能分析模块,可以用于分析 SQL 语句的执行情况,包括执行次数、执行时间、返回行数等。启用 pg_stat_statements 后,可以通过以下步骤进行查询:

  • postgresql.conf 文件中添加以下配置:
shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.track = all
  • 重启 PostgreSQL 服务。
  • 使用以下 SQL 查询语句查看统计数据:
\d+ pg_stat_statements

SELECT * FROM pg_stat_statements ORDER BY total_time DESC;

2. pg_stat_activity

pg_stat_activity 可以用于监控当前数据库连接的情况,包括连接数、当前执行的 SQL 语句、等待状态等。使用方法如下:

  • 使用以下 SQL 查询语句查看当前连接信息:
SELECT * FROM pg_stat_activity;
  • 可以通过过滤特定条件,如查询等待状态的连接:
SELECT * FROM pg_stat_activity WHERE waiting = true;

3. pg_top

pg_top 是一个类似于 Unix top 命令的工具,可以用于实时监控 PostgreSQL 数据库的性能状况,包括 CPU 利用率、内存使用、磁盘 I/O 等。使用方法如下:

  • 安装 pg_top 工具,可以通过以下命令进行安装:
sudo apt-get install pgtop
  • 运行 pg_top 工具,可以使用以下命令:
pg_top -U postgres -d mydatabase -W

其中,-U 参数指定连接数据库的用户名,-d 参数指定连接的数据库名称,-W 参数表示需要输入密码。运行后,可以实时查看数据库的性能状况。

需要注意的是,这些工具都是用于监控和分析 PostgreSQL 数据库的性能数据,需要根据实际情况选择合适的工具和参数进行使用。

显示查询结果的优雅方式

以下是几种显示查询结果的优雅方式:

  1. 使用 \x 命令切换到扩展模式,这样查询结果将以更易读的格式显示。在扩展模式下,每行将仅显示一列,而不是平铺式的列。您可以使用 \x 命令切换回默认模式。

  2. 使用 \pset 命令设置输出格式。例如,使用以下命令将输出格式设置为表格:

\pset format aligned
  1. 使用 \x auto 命令设置自动扩展模式。在自动扩展模式下,查询结果将根据屏幕大小自动切换到扩展模式或默认模式。您可以使用 \x 命令切换回手动扩展模式。

  2. 使用 \watch 命令观察查询结果的实时更新。这对于需要实时监控查询结果的情况非常有用。

  3. 使用查询结果集中的聚合函数,例如 count、sum、avg 等,以便将结果集汇总为单个值。

  4. 使用视图或临时表格来组织查询结果,以便更好地呈现和分析数据。

  5. 最后,您还可以使用第三方工具,例如 pgcli 和 psqlpp,以获得更丰富的查询结果显示功能和更好的用户体验。

FATAL: no pg_hba.conf entry for host “[local]”, user “bpx”, database “bpx”, SSL off

这个错误提示表明PostgreSQL数据库没有为当前主机和用户配置访问权限。

要解决这个问题,你需要在PostgreSQL的pg_hba.conf文件中添加一个条目来允许该主机和用户访问数据库pg_hba.conf文件位于PostgreSQL的数据目录中,通常在/var/lib/pgsql/data/目录下。

下面是一个示例条目,可以将其添加到pg_hba.conf文件中:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    bpx             bpx             127.0.0.1/32            md5

这个条目允许用户bpx通过md5身份验证方法连接到数据库bpx,并且只允许来自127.0.0.1的连接。

添加完条目后,需要重启PostgreSQL服务才能生效:

systemctl restart postgresql

请注意,根据你的具体情况,可能需要修改一些参数,例如数据库名称、用户名、IP地址、身份验证方法等。

重新加载配置文件

host all all 0.0.0.0/0 trust
pg_ctl -D /pgdata/data/*/ reload

这个命令会在PostgreSQL的pg_hba.conf文件中添加一条条目,允许任何用户和任何数据库从任何IP地址连接到PostgreSQL服务器,而不需要密码。出于安全考虑,通常不建议这样做,因为它允许具有服务器网络访问权限的任何人可能在不进行身份验证的情况下访问PostgreSQL数据库。建议使用更安全的身份验证方法,例如密码身份验证或SSL / TLS加密,并限制对受信任的IP地址或网络的访问。


http://www.niftyadmin.cn/n/254936.html

相关文章

C#基础学习--其他主题

目录 概述 字符串 使用StringBuilder类 把字符串解析为数据值 关于可空类型的更多内容 为可空类型赋值 使用空接合运算符 Main方法 文档注释 嵌套类型 析构函数和dispose模式 概述 再本章中会讲解一些重要的杂项知识 字符串 字符串是Unicode字符串数组 字符串是不可…

生物---英文

标题 前言必学场景词汇及用法鸟类昆虫类哺乳类爬行类情境常用单词鸟类虫类哺乳类两栖类与爬行类分类与动物相关的习语前言 加油 必学场景词汇及用法 鸟类 1bird [b[插图]d] n.鸟bird’s-eye-view[ˈb[插图]dzaɪˌvju]adj.鸟瞰图的a bird’s-eye view鸟瞰a flock of bird…

Flutter中使用get

get的优势: 路由管理、状态管理 项目中引入 将Get添加到您的pubspec.yaml文件: dependencies:get: ^4.6.5导入要使用的文件: import package:get/get.dart;GetX地址 Github:https://github.com/jonataslaw/getxPub:https://pub.dev/packa…

5年测试总结,自动化测试DevOps-CICD持续集成流程设计...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 测试进阶&#xf…

27《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》中文分享

​《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》 本人能力有限,如果错误欢迎批评指正。 第六章:The principles of protein folding kinetics (蛋白质折叠动力学的原理) 整个二级结构通常作为一个单…

Kubernetes 核心对象

Kubernetes 中的所有内容都被抽象为“资源”,如 Pod、Service、Node 等都是资源。“对象”就是“资源”的实例,是持久化的实体。Kubernetes 使用这些实体去表示整个集群的状态。它们主要描述了如下信息: 哪些容器化应用正在运行(…

MySQL(复合查询)

文章目录 0 前言1 基本查询2 多表查询3 自连接4 子查询4.1 单行子查询4.2 多行子查询4.3 多列子查询4.4 在from子句中使用子查询4.5 合并查询4.5.1 union4.5.3 union all 0 前言 相关内容已经准备好了 链接:https://gitee.com/ding-xushengyun/linux__cpp/blob/ma…

Cleer ARC II 音弧

戴上Cleer ARC II 音弧解放双耳,享受更自由的音符 用惯了各种入耳式耳机,换上开放式耳机,戴着确实更加舒服,特别是我现在用的这款Cleer ARC II 音弧,戴上还不容易掉,很适合运动使用。这款耳机采用一种耳挂佩…