6.6. PostgreSQL Tuning

PostgreSQL 是基于主 SQL 的数据库,供 Satellite 在 Satellite 执行的各种任务中存储持久上下文。数据库看到一个广泛的使用方法通常会努力为 Satellite 提供其平稳操作所需的数据。这使得 PostgreSQL 成为大量使用的进程,如果 tuned 可以在 Satellite 的整体操作响应方面有很多好处。

您可以对 PostgreSQL 应用一组调整,以改进其响应时间,这将修改 postgresql.conf 文件。

流程

  1. 附加 /etc/foreman-installer/custom-hiera.yaml 以调整 PostgreSQL:

    postgresql::server::config_entries:
      max_connections: 1000
      shared_buffers: 2GB
      work_mem: 8MB
      autovacuum_vacuum_cost_limit: 2000

    您可以使用它来有效地调整 Satellite 实例,而不考虑调优配置文件。

  2. 将您的更改应用到 Satellite 服务器。更多信息请参阅 第 6.1 节 “应用配置”

在以上调优配置中,有一组我们更改的键:

  • max_ CONNECTIONS :键定义运行的 PostgreSQL 进程可接受的最大连接数。
  • shared_buffers :共享缓冲区定义 PostgreSQL 中所有活动连接使用的内存来存储不同数据库操作的数据。这样做的最佳值将因 Satellite 中操作的频率而异 2 GiB 到您系统内存的最大 25%。
  • work_mem : work_mem 是为每个进程分配的内存,用于存储进程正在执行的操作的中间结果。将此值设置为 8 MB 应该足以满足 Satellite 上大多数密集型操作要求。
  • autovacuum_vacuum_cost_limit :键定义 autovacuum 进程内 vacuuming 操作的成本限制值,以清理数据库关系内的死组。成本限制定义了可在进程运行的单个运行的元组数。红帽建议将值设为 2000,因为它适用于 中等额外大额外容量的配置文件,这 基于 Satellite 在 PostgreSQL 服务器进程上推送的常规负载。

如需更多信息,请参阅 BZ1867311: 当 checkpoint_segments postgres 参数配置时,升级会失败

6.6.1. 基准测试原始 DB 性能

要获得关于 Candlepin、Foreman 和 Pulp 检查 satellite-support git 存储库中的 postgres-size-report 脚本的磁盘空间中顶级表大小的列表。

pgbench 工具(请注意,您可能需要将 PostgreSQL 数据目录 /var/opt/rh/rh-postgresql12/lib/pgsql/ 目录调整为 100 GiB,或基准需要运行什么来测量系统上的 PostgreSQL 性能。使用 yum install postgresql-contrib 进行安装。如需更多信息,请参阅 github.com/DSLSatellite/satellite-support

为 PostgreSQL 数据目录选择文件系统可能也很重要。

警告
  • 永远不会在生产环境中进行任何测试,且没有有效的备份。
  • 在开始测试前,请查看数据库文件的大多。使用实际小数据库进行测试不会产生任何有意义的结果。例如,如果 DB 只是 20 GiB,而缓冲区池为 32 GiB,则不会显示大量连接的问题,因为数据会被完全缓冲。