5.7. PostgreSQL 调优
PostgreSQL 是基于 SQL 的主要数据库,供 Satellite 用于在卫星执行的各种任务中存储持久上下文。数据库看到大量使用方法通常会努力为卫星提供其平稳运行所需的数据。这使得 PostgreSQL 成为大量使用的进程,如果 tuned 会对 Satellite 的整体操作响应有很多好处。
PostgreSQL 作者建议在运行 PostgreSQL 的服务器上禁用透明巨页。更多信息请参阅 第 4.3 节 “禁用透明巨页”。
您可以将一组调优应用到 PostgreSQL 以提高其响应时间,这将修改 postgresql.conf 文件。
流程
附加
/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 实例,而不考虑调优配置文件。
- 将您的更改应用到卫星服务器。更多信息请参阅 第 5.1 节 “应用配置”。
在以上调整配置中,我们更改了一组特定的密钥:
-
MAX_CONNECTIONS :键定义正在运行的 PostgreSQL 进程可接受的最大连接数。 -
shared_buffers:共享缓冲区定义 PostgreSQL 内所有活动连接使用的内存,以存储不同数据库操作的数据。其中一个最佳值将根据在 Satellite 上执行的操作的频率,2 GiB 到您总系统内存的 25%。 -
work_mem:work_mem 是 PostgreSQL 的每个进程上分配的内存,用于存储进程正在执行的操作的中间结果。将此值设置为 8MB 应该足以用于 Satellite 上的大多数密集型操作。 -
autovacuum_vacuum_cost_limit:键定义了自动vacuum进程中的 vacuuming 操作的成本限制值,以清理数据库关系中的死元组。成本限制定义进程可在单个运行中处理的元组数。红帽建议根据 Satellite 在 PostgreSQL 服务器进程上推送的一般负载,将值设为2000,因为它用于 中型、大、超大和 extra-extra-large 配置集。
如需更多信息,请参阅 BZ1867311: Upgrade failed when checkpoint_segments postgres 参数配置。
5.7.1. 基准测试原始 DB 性能 复制链接链接已复制到粘贴板!
要获得 satellite-support git 存储库中的 Candlepin、Foreman 和 Pulp 检查 postgres-size-report 脚本的磁盘空间中的顶级表大小列表。
pgbench 工具(请注意,您可能需要将 PostgreSQL 数据目录 /var/lib/pgsql 目录调整为 100 GiB,或者执行基准运行的内容)可能用来衡量系统中的 PostgreSQL 性能。使用 dnf install postgresql-contrib 安装它。如需更多信息,请参阅 github.com/RedHatSatellite/satellite-support。
PostgreSQL 数据目录的文件系统选择可能也很重要。
- 切勿在生产环境中执行任何测试,且无需有效的备份。
- 开始测试前,请查看数据库文件的大容量。使用真正小数据库进行测试不会产生任何有意义的结果。例如,如果 DB 只是 20 GiB,而缓冲区池为 32 GiB,则它不会显示大量连接的问题,因为数据将完全缓冲。