性能调优指南


Red Hat Satellite 6.11

优化 Red Hat Satellite 性能的指南

Red Hat Satellite Documentation Team

摘要

性能调优指南旨在涵盖一组调优和提示,可用作扩展 Red Hat Satellite 6.10 环境的参考。

向红帽文档提供反馈

我们感谢您对文档提供反馈信息。请让我们了解如何改进文档。

您可以通过在 Bugzilla 中记录一个 ticket 来提交反馈:

  1. 导航到 Bugzilla 网站。
  2. Component 字段中,使用 Documentation
  3. Description 字段中,输入您要改进的建议。包括文档相关部分的链接。
  4. Submit Bug

第 1 章 性能调优简介

本文档提供了调整 Red Hat Satellite 的性能和可扩展性指南。虽然有多个需要注意的是让内容适用于涵盖大量用例的内容(如果尚未涵盖一些用例),但请自由地联系红帽以获取非文档用例的支持。

第 2 章 性能调优 Quickstart

您可以使用构建在 Satellite 中包含的调优配置集中基于预期的受管主机计数和硬件分配调整 Satellite 服务器,该配置文件可使用安装过程的调优标志。如需更多信息,请参阅 在 连接的网络环境中安装 Satellite 服务器 中的 使用预定义的配置文件调优 Satellite 服务器

根据 Satellite 管理的受管主机数量提供四个大小。您可以在 /usr/share/foreman-installer/config/foreman.hiera/tuning/sizes 中包含的配置文件中找到每个配置文件的具体调优设置。

Name受管主机数量推荐的 RAM推荐的内核

default

0 – 5000

20 GiB

4

5000 – 10000

32 GiB

8

Large

10000 – 20000

64 GiB

16

extra-large

20000 – 60000

128 GiB

32

extra-extra-large

60000+

256 GiB+

48+

流程

  1. 选择安装大小: defaultmediumlargeadditional-largeextra-extra-large。默认值为 default
  2. 运行 satellite-installer

    # satellite-installer --tuning "My_Installation_Size"
  3. 可选:运行健康检查。更多信息请参阅 第 6.1 节 “应用配置”
  4. 可选:直接使用 Puma Tuning 部分直接支持 Ruby 应用程序服务器。如需更多信息,请参阅 第 6.2 节 “puma Tunings”

第 3 章 主要性能注意事项

您可以提高 Red Hat Satellite 的性能和可扩展性:

  1. 配置 httpd
  2. 配置 Puma 以增加并发
  3. 配置 Candlepin
  4. 配置 Pulp
  5. 配置 Foreman 的性能和可扩展性
  6. 配置 Dynflow
  7. 部署外部胶囊而不是依赖于内部胶囊
  8. 配置 katello-agent 以实现可扩展性
  9. 配置 Hammer 以减少 API 超时
  10. 配置 qpid 和 qdrouterd
  11. 改进 PostgreSQL 以处理更多并发负载
  12. 为 DB 工作负载配置存储
  13. 确保满足内容视图的存储要求
  14. 确保满足系统要求
  15. 改进远程执行环境

第 4 章 性能调优系统要求

在安装 Satellite 指南中,您可以找到 为安装准备环境的 硬件和软件要求。

第 5 章 配置 Satellite 环境以提高性能

CPU
Satellite 可用的物理内核越大,可以为任务实现更高的吞吐量。Puppet 和 PostgreSQL 等一些 Satellite 组件是 CPU 密集型应用,实际上可从更多可用 CPU 内核中受益。
内存
运行 Satellite 的系统中可用的内存量越大,最好是 Satellite 操作的响应时间。由于 Satellite 使用 PostgreSQL 作为数据库解决方案,因此由于内存中的数据保留增加,任何额外内存与调优相结合,将提高应用程序的响应时间。
磁盘
由于存储库同步、软件包数据检索、内容主机订阅记录的高频率数据库更新,建议 Satellite 安装在高速度 SSD 上,以避免因为磁盘读取或写入而发生性能瓶颈。Satellite 需要磁盘 IO 处于或以上的 60 日-使用80 MB,每秒为读操作吞吐量每秒的吞吐量。以下任何值都对 Satellite 操作有严重影响。与 HDD 相比,PostgreSQL 等 Satellite 组件从使用 SSD 中受益,因为它们的延迟较低。
Network
Satellite 服务器和 Capsule 之间的通信受到网络性能的影响。需要具有最低 jitter 和低延迟的大量网络,才能启用 Satellite 服务器和 Capsule 同步(至少确定它不会导致连接重置等)。
服务器电源管理
默认情况下,您的服务器可能会被配置为节省电源。虽然这是保持最大功耗的好方法,但它也具有降低 Satellite 可能能够实现的性能的副作用。对于运行 Satellite 的服务器,建议将 BIOS 设置为使系统以性能模式运行,以提高 Satellite 可以实现的最大性能级别。

5.1. 基准测试磁盘性能

我们正在更新 satellite-maintain,仅在内部快速存储基准产生数字低于我们推荐的吞吐量时警告用户。

另外,在可运行的更新基准脚本(可能会在以后集成到 satellite-maintain 中)来获取更准确的实际存储信息。

注意
  • 您可能需要临时减少 RAM,才能运行 I/O 基准。例如,如果您的 Satellite 服务器有 256 GiB RAM,那么测试将需要 512 GiB 的存储才能运行。作为临时解决方案,您可以在 grub 中添加 mem=20G 内核选项,以便临时减少 RAM 的大小。基准会创建一个文件两倍的 RAM 大小在指定目录中,并对它执行一系列存储 I/O 测试。文件的大小可确保测试不仅仅是测试文件系统缓存。如果您对其他文件系统进行基准测试,例如较小的卷,如 PostgreSQL 存储,您可能需要缩小 RAM 大小,如前面所述。
  • 如果您使用不同的存储解决方案,如 SAN 或 iSCSI,您可以预期不同的性能。
  • 红帽建议您在执行这个脚本前停止所有服务,并会提示您完成此操作。

此测试不使用直接 I/O,并将使用文件缓存作为正常操作。

您可以找到我们的第一个脚本 storage-benchmark 版本。要执行它,只需将脚本下载到 Satellite 中,使其可执行并运行:

# ./storage-benchmark /var/lib/pulp

如脚本中的 README 块中所述,您通常希望在以下测试中平均 100MB/sec 或更高版本中看到:

  • 基于本地 SSD 的存储应给出 600MB/sec 或更高版本的值。
  • spinning 磁盘应该在 10039)- the200MB/sec 或更高范围内提供值。

如果您在这中看到值,请创建一个支持问题单以获得帮助。

如需更多信息,请参阅 Satellite 操作上的磁盘影响

5.2. 启用 Tuned 配置集

Red Hat Enterprise Linux 7 在安装过程中默认启用 tuned 守护进程。在裸机上,红帽建议在 Satellite 服务器和 Capsule 上运行 throughput-performance tuned 配置集。在虚拟机上,红帽建议运行 virtual-guest 配置集。

流程

  1. 检查 tuned 是否正在运行:

    # systemctl status tuned
  2. 如果 tuned 没有运行,请启用它:

    # systemctl enable --now tuned
  3. 可选:查看可用的 tuned 配置集列表:

    # tuned-adm list
  4. 根据您的场景启用 tuned 配置集:

    # tuned-adm profile "My_Tuned_Profile"

透明大内存页是 Linux 内核使用的内存管理技术,它通过使用较大的大小的内存页面可减少使用 Translation Lookaside Buffer (TLB)的开销。由于具有 Sparse Memory Access 模式而非 Contiguous Memory 访问模式的数据库,当启用 Transparent Huge Pages 时,数据库工作负载通常性能不佳。要提高 PostgreSQL 的性能,请禁用 Transparent Huge Pages。在单独的服务器上运行 PostgreSQL 数据库的部署中,只有 Satellite 服务器上使用 Transparent Huge Pages 可能会有一个小的好处。

有关禁用透明巨页的更多信息,请参阅如何在 Red Hat Enterprise Linux 7、8 中禁用透明巨页(THP)

第 6 章 为性能配置 Satellite

Satellite 附带很多组件,它们相互通信。您可以独立调整这些组件,以达到您的场景的最大性能。

在 Red Hat Enterprise Linux 7 和 Red Hat Enterprise Linux 8 中安装的 Satellite 之间没有显著的性能区别。

6.1. 应用配置

在以下小节中,我们建议各种可调项以及如何应用它们。请先在生产环境中测试这些更改,且有有效的备份,以及正确的中断窗口,因为大多数情况下需要 Satellite 重启。

最好在应用任何更改前设置监控,因为您可以评估更改的影响。虽然我们试图模拟真实环境环境,但我们的测试环境可能比看到的情况过长。

更改 systemd 服务文件

如果您更改了一些 systemd 服务文件,则需要通知 systemd 守护进程重新载入配置:

# systemctl daemon-reload

重启 Satellite 服务:

# satellite-maintain service restart

更改配置文件

如果您更改了配置文件,如 /etc/foreman-installer/custom-hiera.yaml,请重新运行安装程序以应用更改:

# satellite-installer

使用附加选项运行安装程序

如果您需要使用添加一些新选项重新运行安装程序:

# satellite-installer new options

检查设置的基本健全性

可选: 更改后,运行这个快速 Satellite health-check :

# satellite-maintain health check

6.2. puma Tunings

puma 是一个 ruby 应用服务器,用于向客户端提供与 Foreman 相关的请求。对于应该处理大量客户端或频繁操作的 Satellite 配置,必须正确调整 Puma。

6.2.1. puma 线程

Puma 线程数量(每个 Puma worker)配置为使用两个值进行配置: threads_minthreads_max

threads_min 的值决定了每个 worker 在 worker 启动时生成多少个线程。然后,当并发请求进入并且需要更多线程时,worker 将生成更多 worker,最多为 threads_max 限制。

我们建议将 threads_min 设置为与 threads_max 的值相同,与 Puma 线程较少的值相同,这会导致 Satellite 服务器上的内存用量更高。

例如,我们已使用并发注册测试来比较这两个设置:

具有 8 个 CPU 的 Satellite 虚拟机,40 GiB RAM具有 8 个 CPU 的 Satellite 虚拟机,40 GiB RAM

--foreman-foreman-service-puma-threads-min=0

--foreman-foreman-service-puma-threads-min=16

--foreman-foreman-service-puma-threads-max=16

--foreman-foreman-service-puma-threads-max=16

--foreman-foreman-service-puma-workers=2

--foreman-foreman-service-puma-workers=2

threads_min=0 相比,将最小 Puma 线程设置为 16 会导致大约需要 12% 的内存用量。

6.2.2. puma Workers 和 Threads Auto-Tuning

如果您没有通过 satellite-installer 提供任何 Puma worker 和 thread 值,或者 Satellite 配置中没有它们,satellite-installer 会配置均衡数量的 worker。它遵循以下公式:

min(CPU_COUNT * 1.5, RAM_IN_GB - 1.5)

对于大多数情况,这应该很正常,但对于一些使用模式调整,需要限制专用于 Puma (其他 Satellite 组件)或其它原因的资源量。每个 Puma worker 消耗大约 1 GiB RAM。

查看您当前的 Satellite 服务器设置

# cat /etc/systemd/system/foreman.service.d/installer.conf

查看当前活跃的 Puma worker

# systemctl status foreman.service

6.2.3. 手动调整 Puma worker 和线程数

如果您决定不依赖 第 6.2.2 节 “puma Workers 和 Threads Auto-Tuning”,您可以为这些可调项应用自定义数字。在以下示例中,我们使用 2 个 worker、5 个和 5 个线程:

# satellite-installer \
--foreman-foreman-service-puma-workers=2 \
--foreman-foreman-service-puma-threads-min=5 \
--foreman-foreman-service-puma-threads-max=5

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

6.2.4. puma Workers 和 Threads Recommendations

为了为不同的调优配置集推荐线程和 worker 配置,我们对具有不同调优配置文件的 Satellite 进行了 Puma 调优测试。此测试中使用的主要测试是使用下列组合的并发注册,以及不同数量的 worker 和线程。我们建议只基于并发注册性能,因此它可能没有反映您的具体用例。例如,如果您的设置非常面向许多发布和提升的内容,您可能需要限制 Puma 所消耗的资源,而代于 Pulp 和 PostgreSQL。

Name受管主机数量RAM内核推荐的 min 和 max 的 Puma 线程推荐的 Puma Workers

default

0 – 5000

20 GiB

4

16

4 – 6

5000 – 10000

32 GiB

8

16

8 – 12

Large

10000 – 20000

64 GiB

16

16

12 – 18

extra-large

20000 – 60000

128 GiB

32

16

16 – 24

extra-extra-large

60000+

256 GiB+

48+

16

20 – 26

调优 worker 数量是更重要的方面,在某些情况下,我们看到最多 52% 的性能提高了。虽然安装程序默认使用 5 分钟/最大线程,但我们推荐使用上表中的所有调优配置集的 16 个线程。这是因为,与设置有 4 个线程相比,我们看到最多 23% 的性能提高了 16 个线程(14% 用于 8,10% 用于 32 个)。

要找出这些建议,我们使用了并发注册测试问题单,这是非常具体的用例。它可能在您的 Satellite 上有所不同,这些用例可能具有更均衡的用例(不仅仅是注册)。保持默认的 5 分钟/最大线程也是良好的选择。

以下是我们向我们提供这些建议的一些衡量:

 4 个 worker,4 个线程4 个 worker,8 个线程4 个 worker,16 个线程4 个 worker,32 个线程

改进

0%

14%

23%

10%

在默认设置(4 个 CPU)上使用 4945-1146 worker - 与 2 个 worker 相比,我们看到 25% 的性能,与 2 个 worker 相比,在 8 个 worker 中性能较低,请参阅下表:

 2 个 worker,16 个线程4 个 worker,16 个线程6 个 worker,16 个线程8 个 worker,16 个线程

改进

0%

26%

22%

-8%

在中型设置(8 个 CPU)上使用 8598-59812 worker - 请参考下表:

 2 个 worker,16 个线程4 个 worker,16 个线程8 个 worker,16 个线程12 个 worker,16 个线程16 个 worker,16 个线程

改进

0%

51%

52%

52%

42%

在 32 个 CPU 设置(这在 90 GiB RAM 机器上测试,在系统启动交换时被认为是系统启动交换(正确的 额外容量 )应该有 128 GiB,因此我们测试了更高的注册并发级别会出现问题,因此我们无法建议它。

 4 个 worker,16 个线程8 个 worker,16 个线程16 个 worker,16 个线程24 个 worker,16 个线程32 个 worker,16 个线程48 个 worker,16 个线程

改进

0%

37%

44%

52%

失败太多

失败太多

6.2.5. 配置 Puma Workers

如果有足够的 CPU,添加更多 worker 会增加性能。例如,我们已将 Satellite 设置与 8 和 16 个 CPU 进行比较:

表 6.1. 用于测试 worker 计数效果的 satellite-installer 选项
具有 8 个 CPU 的 Satellite 虚拟机,40 GiB RAM具有 16 个 CPU 的 Satellite 虚拟机,40 GiB RAM

--foreman-foreman-service-puma-threads-min=16

--foreman-foreman-service-puma-threads-min=16

--foreman-foreman-service-puma-threads-max=16

--foreman-foreman-service-puma-threads-max=16

--foreman-foreman-service-puma-workers={2|4|8|16}

--foreman-foreman-service-puma-workers={2|4|8|16}

在 8 个 CPU 设置中,将 worker 数量从 2 改为 16,将并发注册时间提高 36%。在 16 个 CPU 设置中,相同的更改会导致 55% 的改进。

添加更多 worker 还可以帮助完成所有注册并发 Satellite 可以处理。在我们的测量中,使用 2 个 worker 设置可以处理 480 并发注册,但添加更多 worker 可以提高这种情况。

手动调整

您可以将 worker 数量设置为 2,并将线程数量设置为五个:

# satellite-installer \
--foreman-foreman-service-puma-threads-max=5
--foreman-foreman-service-puma-threads-min=5 \
--foreman-foreman-service-puma-workers=2 \

6.2.6. 配置 Puma 线程

更多线程允许较少的时间来并行注册主机。例如,我们比较这两个设置:

具有 8 个 CPU 的 Satellite 虚拟机,40 GiB RAM具有 8 个 CPU 的 Satellite 虚拟机,40 GiB RAM

--foreman-foreman-service-puma-threads-min=16

--foreman-foreman-service-puma-threads-min=8

--foreman-foreman-service-puma-threads-max=16

--foreman-foreman-service-puma-threads-max=8

--foreman-foreman-service-puma-workers=2

--foreman-foreman-service-puma-workers=4

使用更多 worker 和相同线程总数会导致在高并发注册场景中有 11% 的速度。此外,添加更多 worker 不会消耗更多 CPU 和 RAM,但性能更高。

6.2.7. 配置 Puma DB 池

$db_pool 的有效值设为相同的 $foreman::foreman_service_puma_threads_max。它是 $foreman::db_pool$foreman::foreman_service_puma_threads_max 的最大值,但默认值 5 都增加 5,因此 5 以上的最大线程都根据相同数量自动增加数据库连接池。

如果您遇到 ActiveRecord::ConnectionTimeoutError: 无法在 5.000 秒内从池中获取连接(等待 5.006 秒);所有池的连接都在使用 /var/log/foreman/production.log 中的错误,您可能需要增加这个值。

查看当前的 db_pool 设置

# grep pool /etc/foreman/database.yml
  pool: 5

6.2.8. 手动调优 db_pool

如果您决定不依赖于自动配置的值,您可以应用如下自定义数字:

# satellite-installer --foreman-db-pool 10

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

6.3. Apache HTTPD 性能调优

Apache httpd 形成 Satellite 的核心部分,并充当处理通过 Satellite Web UI 或公开 API 发出的请求的 Web 服务器。为增加操作的并发性,httpd 会形成第一点,调整有助于提高 Satellite 的性能。

6.3.1. 配置 Apache httpd 可以启动多少个进程

默认情况下,HTTPD 使用 prefork 请求处理机制。通过处理请求的预分叉模型,httpd 会启动一个新进程来处理客户端进入的连接。

当对 apache 的请求数超过可启动以处理传入连接的子进程的最大数量时,httpd 引发 HTTP 503 Service Unavailable 错误。amidst httpd 不足以处理进程,传入的连接也可以在 Satellite 端造成多个组件失败,因为 httpd 进程可用性上 Pulp 等组件依赖项。

您可以调整 HTTPD prefork 的配置,以根据预期的峰值负载处理更多并发请求。

对服务器的预fork配置的一个示例,可能需要处理 150 个并发内容主机注册到 Satellite,如下所示(请参阅 如何使用 custom-hiera.yaml 文件;这将修改配置文件 /etc/httpd/conf.modules.d/prefork.conf):

您可以修改 /etc/foreman-installer/custom-hiera.yaml

apache::mod::prefork::serverlimit: 582
apache::mod::prefork::maxclients: 582
apache::mod::prefork::startservers: 10
  • 设置 ServerLimit 参数,以提升 MaxClients 值。

    如需更多信息,请参阅 httpd 文档中的 ServerLimit Directive

  • 设置 MaxClients 参数,以限制 httpd 可以启动以处理传入请求的子进程的最大数量。

    如需更多信息,请参阅 httpd 文档中的 MaxRequestWorkers Directive

6.3.2. 为 Apache HTTPD 配置开放文件限制

通过调优,Apache httpd 可以轻松地在服务器上打开大量文件描述符,这些描述符可能会超过大多数 Linux 系统的默认限制。为了避免因为系统上的最大打开文件限制而可能出现任何类型的问题,请创建以下文件和目录并设置以下文件和目录,如以下示例中指定的文件的内容:

流程

  1. /etc/systemd/system/httpd.service.d/limits.conf 中设置最大打开文件限制:

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

6.4. qdrouterd 和 qpid Tuning

6.4.1. 计算 qdrouterd 的最大打开文件限制

在使用具有大量内容主机的 katello-agent 基础架构部署中,可能需要增加 qdrouterd 的最大打开文件。

使用这个公式计算 qdrouterd 中打开文件的限制: (N x 3)+ 100,其中 N 是内容主机的数量。每个内容主机最多可消耗路由器中的三个文件描述符,并且需要 100 个文件描述符来运行路由器本身。

以下设置允许 Satellite 扩展至 10.000 内容主机。

流程

  1. /etc/foreman-installer/custom-hiera.yaml 中设置最大打开的文件限制:

    qpid::router::open_file_limit: "My_Value"

    默认值为 150100

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

6.4.2. 计算 qpidd 的最大打开文件限制

在使用具有大量内容主机的 katello-agent 基础架构部署中,可能需要增加 qpidd 的最大打开文件。

使用这个公式计算 qpidd 中打开文件的限制: (N x 4)+ 500,其中 N 是内容主机的数量。单个内容主机最多可消耗四个文件描述符,对于代理操作需要 500 个文件描述符(qpidd 组件)。

流程

  1. /etc/foreman-installer/custom-hiera.yaml 中设置最大打开的文件限制:

    qpid::open_file_limit: "My_Value"

    默认值为 65536

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

6.4.3. 配置最大输入输出请求

在使用具有大量内容主机的 katello-agent 基础架构部署中,可能需要增加允许的最大并发 AIO 请求。您可以通过增加内核参数 fs.aio-max-nr 来增加允许并发 AIO 请求的最大数量。

流程

  1. fs.aio-max-nr 的值设置为 /etc/sysctl.d 的文件中所需的最大值:

    fs.aio-max-nr=My_Maximum_Concurrent_AIO_Requests

    确保这个数字大于 33,超过您计划注册到 Satellite 的最大内容主机数量。

  2. 应用更改:

    # sysctl -p
  3. 可选:重启 Satellite 服务器以确保应用此更改。

6.4.4. 存储注意事项

当您计划广泛使用 katello-agent 的安装时,请确保提前为 /var/lib/qpidd 提供足够的存储空间。在 Satellite 服务器上,/var/lib/qpidd 需要每个内容主机 2MiB 磁盘空间。

6.4.5. 配置 QPID mgmt-pub-interval 参数

您可能会在 Red Hat Enterprise Linux 7 中看到日志中的以下错误(使用 journalctl 命令访问它):

satellite.example.com qpidd[92464]: [Broker] error Channel exception: not-attached: Channel 2 is not attached(/builddir/build/BUILD/qpid-cpp-0.30/src/qpid/amqp_0_10/SessionHandler.cpp: 39
satellite.example.com qpidd[92464]: [Protocol] error Connectionqpid.10.1.10.1:5671-10.1.10.1:53790 timed out: closing

出现此错误消息的原因是 qpid 为队列、会话和连接维护管理对象,默认每 10 秒回收它们。同一 ID 的同一对象被创建、删除并重新创建。旧的管理对象尚未清除,因此 qpid 抛出此错误的原因。

流程

  1. /etc/foreman-installer/custom-hiera.yaml 中设置 mgmt-pub-interval 参数:

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

    如需更多信息,请参阅 BZ 1335694

6.5. dynflow Tuning

dynflow 是工作流管理系统和任务编配器,它是一个 Satellite 插件,用于以特定顺序执行方式执行 Satellite 的不同任务。在 Satellite 上检查了大量客户端并运行许多任务时,Dynflow 可能会对添加的调优采取一些帮助,指定它可以启动多少个执行者。

有关与 Dynflow 相关的调整的更多信息,请参阅 https://satellite.example.com/foreman_tasks/sidekiq

增加 Sidekiq worker 数量

Satellite 包含名为 dynflow-sidekiq 的 Dynflow 服务,用于执行由 Dynflow 调度的任务。sidekiq worker 可以分组到不同的队列中,以确保一种类型的许多任务不会阻止执行其他类型的任务。

红帽建议增加 sidekiq worker 的数量,以扩展 Foreman 任务以进行批量并发任务,例如,对于多个内容视图发布和提升、内容同步以及同步到 Capsule 服务器。有两个可用选项:

  • 您可以增加 worker 使用的线程数量(worker 的并发)。这对因为线程并发实现而大于 5 的值有限制。
  • 您可以增加 worker 数量,这是推荐的数量。

流程

  1. 将 worker 数量从一个 worker 增加到三个,而每个 worker 会保留五个线程/并发:

    # satellite-installer --foreman-dynflow-worker-instances 3    # optionally, add --foreman-dynflow-worker-concurrency 5
  2. 可选:检查是否有三个 worker 服务:

    # systemctl -a | grep dynflow-sidekiq@worker-[0-9]
    dynflow-sidekiq@worker-1.service        loaded    active   running   Foreman jobs daemon - worker-1 on sidekiq
    dynflow-sidekiq@worker-2.service        loaded    active   running   Foreman jobs daemon - worker-2 on sidekiq
    dynflow-sidekiq@worker-3.service        loaded    active   running   Foreman jobs daemon - worker-3 on sidekiq

如需更多信息,请参阅如何在 Satellite6 中添加 sidekiq worker?

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,则不会显示大量连接的问题,因为数据会被完全缓冲。

6.7. 胶囊配置调优

Capsule 旨在卸载 Satellite 负载的一部分,并提供对将内容分发到客户端的不同网络的访问,但也可用于执行远程执行作业。它们无法帮助任何广泛使用 Satellite API 作为主机注册或软件包配置集更新的内容。

6.7.1. Capsule 性能测试

我们在多个 Capsule 配置中计算了多个测试案例:

Capsule HW 配置CPURAM

minimal

4

12 GiB

Large

8

24 GiB

额外大

16

46 GiB

内容交付用例

在下载测试中,我们同时下载了 2000 个软件包的 40MB 存储库(100, 200)。1000 个主机,我们每次我们加倍的 Capsule 服务器资源时,每次下载期间大约有 50% 的改进。有关更精确的数字,请查看下表。

并发下载主机Minimal (4 CPU 和 12 GiB RAM)→ Large (8 CPU 和 24 GiB RAM)Large (8 CPU 和 24 GiB RAM)→ Extra Large (16 CPU 和 46 GiB RAM)Minimal (4 CPU 和 12 GiB RAM)→ Extra Large (16 CPU 和 46 GiB RAM)

平均贡献

~ 50%(例如,对于 700 个并发下载,平均 9 秒。每个软件包 4.4 秒)

~ 40%(例如,对于 700 个并发下载,平均 4.4 秒)。每个软件包 2.5 秒)

~ 70 (如 700 个并发下载,平均 9 秒)。每个软件包 2.5 秒)

当从 Satellite 服务器与从 Capsule 服务器下载性能相比,我们只看到大约 5% 的速度,但预期为 Capsule 服务器的主要好处在于获得更接近地理分布式客户端(或不同网络中的客户端)以及处理负载 Satellite 服务器的一部分的内容。在某些较小的硬件配置中(8 个 CPU 和 24 GiB),Satellite 服务器无法处理来自 500 个并发客户端的下载,而具有相同硬件配置的 Capsule 服务器可以服务超过 1000 个且可能甚至更多。

频繁注册用例

对于并发注册,瓶颈是 CPU 速度,但所有配置都可以在不交换的情况下处理高并发性。用于 Capsule 的硬件资源仅对注册性能的影响最小。例如,与具有 4 个 CPU 和 12 GiB RAM 的 Capsule 服务器相比,具有 16 个 CPU 和 46 GiB RAM 的 Capsule 服务器的性能最多显著提高。

远程执行用例

我们已测试了通过 SSH 和 Ansible 后端在 500、2000 和 4000 主机上执行远程执行作业。所有配置都可以处理所有测试,且无错误,除了最小配置(4 个 CPU 和 12 GiB 内存)外,这些测试无法在所有 4000 主机上完成。

内容同步用例

在同步测试中,我们同步 Red Hat Enterprise Linux 6、7、8 BaseOS 和 8 AppStream,我们没有发现 Capsule 配置之间没有显著区别。在并行同步更多内容视图时,这将有所不同。

法律通告

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat, Inc.