调优 Red Hat Satellite 的性能


Red Hat Satellite 6.13

优化 Red Hat Satellite 性能的指南

Red Hat Satellite Documentation Team

摘要

本指南旨在介绍一组调优和提示,这些提示可用作扩展 Red Hat Satellite 环境的参考。

向红帽文档提供反馈

我们感谢您对我们文档的反馈。让我们了解如何改进它。

使用 Red Hat JIRA 中的 Create Issue 表单提供您的反馈。JIRA 问题在 Red Hat Satellite Jira 项目中创建,您可以在其中跟踪其进度。

先决条件

流程

  1. 单击以下链接: 创建问题。如果 Jira 显示登录错误,则登录并在您重定向到表单后继续。
  2. 完成 SummaryDescription 字段。在 Description 字段中,包含文档 URL、章节号以及问题的详细描述。不要修改表单中的任何其他字段。
  3. Create

第 1 章 性能调优简介

本文档提供了针对性能和可扩展性调优 Red Hat Satellite 的指南。虽然我们我们提供了很多谨慎,但为了使内容适用于各种用例,如果存在一些用例,请随时联系红帽以获得未经文档用例的支持。

第 2 章 性能调优快速入门

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

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

Expand
名称受管主机数量建议 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. 选择安装大小: 默认mediumon-largeextra-extra-large。默认值为 default
  2. 运行 satellite-installer

    # satellite-installer --tuning "My_Installation_Size"
    Copy to Clipboard Toggle word wrap
  3. 可选:运行健康检查。更多信息请参阅 第 5.1 节 “应用配置”
  4. 可选:使用 Puma Tuning 部分直接调整 Ruby 应用程序服务器。更多信息请参阅 第 5.2 节 “Puma Tunings”

第 3 章 调优系统要求

您可以在 连接的网络环境中安装 Satellite 服务器中的 为安装准备 硬件和软件要求。

第 4 章 确定硬件和操作系统配置

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

4.1. 基准测试磁盘性能

我们正努力更新 satellite-maintain,以仅在用户内部快速存储基准导致我们推荐的吞吐量下加上数字时警告用户。

另外,还在更新的基准测试脚本中工作,您可以运行(将来可能会集成到 satellite-maintain s 中),以获得更加准确的实际存储信息。

注意
  • 您可能需要临时减少 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
Copy to Clipboard Toggle word wrap

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

  • 基于本地 SSD 的存储应提供 600MB/sec 或更高版本的值。
  • Spinning 磁盘应该提供 100rhacm-rhacm200MB/sec 或更高版本范围内的值。

如果您在此下方看到值,请创建一个支持问题单以获取帮助。

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

4.2. 启用调优配置集

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

流程

  1. 检查 tuned 是否在运行:

    # systemctl status tuned
    Copy to Clipboard Toggle word wrap
  2. 如果 tuned 没有运行,请启用它:

    # systemctl enable --now tuned
    Copy to Clipboard Toggle word wrap
  3. 可选:查看可用 tuned 配置集列表:

    # tuned-adm list
    Copy to Clipboard Toggle word wrap
  4. 根据您的场景启用 tuned 配置集:

    # tuned-adm profile "My_Tuned_Profile"
    Copy to Clipboard Toggle word wrap

4.3. 禁用透明巨页

透明巨页(Trans Hugepage)是一个内存管理技术,供 Linux 内核使用更大的内存页来降低使用 Translation Lookaside Buffer (TLB)的开销。由于具有 Sparse Memory Access 模式而不是 Contiguous Memory 访问模式的数据库,在启用 Transparent Hugepage 时,数据库工作负载通常性能不佳。要提高 PostgreSQL 和 Redis 性能,请禁用透明巨页。在单独的服务器上运行数据库的部署中,只有 Satellite 服务器上使用 Transparent Hugepage 可能会很小的好处。

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

第 5 章 为性能配置 Satellite

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

5.1. 应用配置

在以下部分中,我们建议各种可调项以及如何应用它们。如大多数情况,在非生产环境中,请首先测试非生产环境中的更改。

在应用任何更改前,最好设置监控,因为它允许您评估更改的影响。尽管我们试图模拟真实环境,但我们的测试环境可能太远。

更改 systemd 服务文件

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

# systemctl daemon-reload
Copy to Clipboard Toggle word wrap

重启 Satellite 服务:

# satellite-maintain service restart
Copy to Clipboard Toggle word wrap

更改配置文件

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

# satellite-installer
Copy to Clipboard Toggle word wrap

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

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

# satellite-installer new options
Copy to Clipboard Toggle word wrap

检查设置的基本健全性

可选:进行任何更改后,运行此快速 Satellite health-check :

# satellite-maintain health check
Copy to Clipboard Toggle word wrap

5.2. Puma Tunings

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

5.2.1. Puma Threads

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

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

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

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

Expand
Satellite 虚拟机有 8 个 CPU,40 GiB RAMSatellite 虚拟机有 8 个 CPU,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

将最小 Puma 线程设置为 16 会导致与 threads_min=0 相比的内存用量少 12%。

5.2.2. Puma Workers 和 Threads Auto-Tuning

如果您没有使用 satellite-installer 提供任何 Puma worker 和线程值,或者 Satellite 配置中不存在它们,satellite-installer 会配置均衡的 worker 数量。它遵循此公式:

min(CPU_COUNT * 1.5, RAM_IN_GB - 1.5)
Copy to Clipboard Toggle word wrap

这对大多数情况来说应该非常好,但需要一些使用模式进行调优,以限制专用于 Puma 的资源数量(因此其他 Satellite 组件可以使用它们),或出于其他原因。每个 Puma worker 都消耗大约 1 GiB RAM。

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

# cat /etc/systemd/system/foreman.service.d/installer.conf
Copy to Clipboard Toggle word wrap

查看当前活跃的 Puma worker

# systemctl status foreman
Copy to Clipboard Toggle word wrap

5.2.3. 手动调整 Puma worker 和线程计数

如果您决定不依赖于 第 5.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
Copy to Clipboard Toggle word wrap

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

5.2.4. Puma Workers 和 Threads Recommendations

为了为不同的调优配置文件推荐线程和 worker 配置,我们使用不同的调优配置文件在卫星中进行了 Puma 调整测试。此测试中使用的主要测试是与以下组合中的并发注册,以及不同的 worker 和线程数。我们推荐完全基于并发注册性能,因此可能无法反映您的确切用例。例如,如果您的设置非常面向大量发布和推广的内容,您可能需要限制 Puma 消耗的资源,而使用 Pulp 和 PostgreSQL。

Expand
名称受管主机数量RAM内核推荐 min 和 max 的 Puma Threads建议 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

调优工作程序数是此处更为重要的方面,在一些情况下,我们看到了 52% 的性能提升。虽然安装程序默认使用 5 个 min/max 线程,但我们建议使用上表中的所有调优配置文件的 16 个线程。这是因为,与设置 4 个线程相比,我们看到了高达 23% 的性能提高,16 个线程(84% 和 10% 为 32)。

要找出这些建议,我们使用了并发注册测试案例,这是非常具体的用例。在您的卫星中可能具有不同的,这可能具有更为均衡的用例(不仅仅是注册)。保持默认的 5 分钟/最大线程也是不错的选择。

以下是我们造成以下建议的一些测量:

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

改进

0%

14%

23%

10%

在默认设置(4 个 CPU)上使用 4 个 worker - 与 2 个 worker 相比,我们看到 5 个 worker 的性能高 25%,但在与 2 个 worker 相比,高达 8 个 worker 的性能会降低 8 个 worker 的性能 - 如下所示:

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

改进

0%

26%

22%

-8%

在介质设置(8 CPU)上使用 8mvapich-literal12 worker - 请参考下表:

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

改进

0%

51%

52%

52%

42%

在 32 个 CPU 设置中使用 16 个+1 worker (这在 90 GiB RAM 机器上进行了测试,且内存已作为系统启动交换因素 - 正确的 extra-large 应该有 128 GiB),对于我们测试的更高注册并发级别,我们无法建议它。

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

改进

0%

37%

44%

52%

太多故障

太多故障

5.2.5. 配置 Puma Workers

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

Expand
表 5.1. 用于测试 worker 数量效果的 Satellite-installer 选项
Satellite 虚拟机有 8 个 CPU,40 GiB RAMSatellite 虚拟机有 16 个 CPU,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 个并发注册,但添加更多工作程序可以改进这种情况。

5.2.6. 配置 Puma Threads

更多线程可以缩短并行注册主机的时间。例如,我们对比了这两个设置:

Expand
Satellite 虚拟机有 8 个 CPU,40 GiB RAMSatellite 虚拟机有 8 个 CPU,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,但会获得更高的性能。

5.2.7. 配置 Puma DB 池

$db_pool 的有效值设置为 equal $foreman::foreman_service_puma_threads_max。最多 $foreman::db_pool$foreman_service_puma_threads_max 都是默认的值 5,因此对 5 以上的最大线程自动增加数据库连接池。

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

查看当前的 db_pool 设置

# grep pool /etc/foreman/database.yml
  pool: 5
Copy to Clipboard Toggle word wrap

5.2.8. 手动调优 db_pool

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

# satellite-installer --foreman-db-pool 10
Copy to Clipboard Toggle word wrap

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

5.3. Apache HTTPD 性能调优

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

5.3.1. 为 Apache HTTPD 配置打开文件限制

在调整就位后,Apache httpd 可轻松打开服务器上的许多文件描述符,该描述符可能会超过大部分 Linux 系统的默认限制。为了避免因为系统上超过最大打开文件限制而可能出现的任何问题,请创建以下文件和目录并设置以下示例中指定的文件内容:

流程

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

    [Service]
    LimitNOFILE=640000
    Copy to Clipboard Toggle word wrap
  2. 将您的更改应用到卫星服务器。更多信息请参阅 第 5.1 节 “应用配置”

5.3.2. 调优 Apache Ice Child 过程

默认情况下,httpd 使用事件请求处理机制。当 httpd 的请求数超过可以启动来处理进入连接的最大子进程数时,httpd 会引发 HTTP 503 Service Unavailable 错误。amidst httpd 无法处理进程,进入的连接也可以导致 Satellite 服务的多个组件失败,因为 httpd 进程的可用性某些组件。

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

警告

custom-hiera.yaml 中配置这些数字会锁定它们。如果您使用 satellite-installer --tuning=My_Tuning_Option 更改这些数字,您的 custom-hiera.yaml 将覆盖此设置。只有在您有特殊需要时才设置您的数字。

流程

  1. 通过更改或添加以下几行来修改 /etc/foreman-installer/custom-hiera.yaml 中的并发请求数:

    apache::mod::event::serverlimit: 64
    apache::mod::event::maxrequestworkers: 1024
    apache::mod::event::maxrequestsperchild: 4000
    Copy to Clipboard Toggle word wrap

    示例与在 Satellite 服务器中运行 satellite-installer --tuning=medium 或更高版本相同。

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

5.4. qdrouterd 和 qpid Tuning

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

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

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

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

流程

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

    qpid::router::open_file_limit: "My_Value"
    Copy to Clipboard Toggle word wrap

    默认值为 150100

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

5.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"
    Copy to Clipboard Toggle word wrap

    默认值为 65536

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

5.4.3. 配置最大同步输入输出请求

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

流程

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

    fs.aio-max-nr=My_Maximum_Concurrent_AIO_Requests
    Copy to Clipboard Toggle word wrap

    确保这个数字大于 33 乘以您要注册到 Satellite 的最大内容主机数量。

  2. 应用更改:

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

5.4.4. 存储注意事项

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

5.4.5. 配置 QPID mgmt-pub-interval Parameter

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

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
Copy to Clipboard Toggle word wrap

出现此错误消息的原因是,qpid 为队列、会话和连接维护管理对象,默认每十秒回收它们。创建、删除和再次创建具有相同 ID 的同一对象。旧的管理对象尚未清除,这就是 qpid 引发此错误的原因。

流程

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

    qpid::mgmt_pub_interval: 5
    Copy to Clipboard Toggle word wrap
  2. 将您的更改应用到卫星服务器。更多信息请参阅 第 5.1 节 “应用配置”

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

5.5. Dynflow Tuning

Dynflow 是工作流管理系统和任务编排器,它是 Satellite 插件,用于以不排序执行的方式执行 Satellite 的不同任务。在卫星上检查许多客户端并运行多个任务时,Dynflow 可以利用添加帮助来指定它可以启动多少个 executor。

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

增加 Sidekiq worker 数量

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

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

  • 您可以增加 worker 使用的线程数量(worker 的并发)。由于 Ruby 实现线程的并发,这对大于 5 的值的影响有限。
  • 您可以增加 worker 的数量。

流程

  1. 将 worker 数量从一个 worker 增加到 3,同时每个 worker 剩余的五个线程/证书。

    # satellite-installer --foreman-dynflow-worker-instances 3    # optionally, add --foreman-dynflow-worker-concurrency 5
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap

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

5.6. 基于拉取的 REX 传输调整

Satellite 具有基于拉取的传输模式用于远程执行。此传输模式使用 MQTT 作为其消息传递协议,并包括在每个主机上运行的 MQTT 客户端。如需更多信息,请参阅 管理主机 中的 远程执行的传输模式

5.6.1. 为基于 Pull REX 传输增加主机限制

您可以调整 mosquitto MQTT 服务器,并增加与之连接的主机数量。

流程

  1. 在 Satellite Server 或 Capsule Server 上启用基于拉取的远程执行:

    # satellite-installer --foreman-proxy-plugin-remote-execution-script-mode pull-mqtt
    Copy to Clipboard Toggle word wrap

    请注意,您的 Satellite 服务器或胶囊式服务器只能使用一个传输模式,可以是 SSH 或 MQTT。

  2. 创建配置文件以增加 MQTT 服务接受的默认主机数:

    cat >/etc/systemd/system/mosquitto.service.d/limits.conf <<EOF
    [Service]
    LimitNOFILE=5000
    EOF
    Copy to Clipboard Toggle word wrap

    本例设置了限制,以允许 mosquitto 服务处理 5000 主机。

  3. 运行以下命令以应用您的更改:

    # systemctl daemon-reload
    # systemctl restart mosquitto.service
    Copy to Clipboard Toggle word wrap

5.6.2. 降低基于 Pull REX 传输的性能影响

当使用 Script provider 为远程执行作业配置 Satellite 服务器时,胶囊服务器通过 MQTT 向客户端发送有关新作业的通知。此通知不包括客户端应该执行的实际工作负载。客户端收到有关新远程执行作业的通知后,它会查询胶囊服务器以获取其实际工作负载。在作业期间,客户端定期将作业输出发送到胶囊服务器,进一步增加对胶囊服务器的请求数量。

这些对胶囊服务器的请求与 MQTT 协议允许的高并发性一起可能会导致胶囊服务器上的可用连接耗尽。有些请求可能会失败,使远程执行作业的一些子任务无响应。这还取决于实际的作业工作负载,因为一些作业会给 Satellite 服务器造成额外的负载,从而在客户端注册到 Satellite 服务器时使其争用资源。

要避免这种情况,请使用以下参数配置 Satellite 服务器和 Capsule 服务器:

  • MQTT Time To Live - 在考虑作业未发送前,给主机获取该作业的时间间隔(以秒为单位)
  • MQTT Resend Interval - 应重新指向主机通知的时间间隔(以秒为单位),直到作业被获取或取消。
  • MQTT Rate Limit - 允许同时运行的作业数量。您可以通过调整速率限制来限制远程执行的并发性,这意味着您要给 Satellite 带来更多负载。

流程

  • 在 Satellite 服务器上调整 MQTT 参数:
# satellite-installer \
--foreman-proxy-plugin-remote-execution-script-mqtt-rate-limit My_MQTT_Rate_Limit \
--foreman-proxy-plugin-remote-execution-script-mqtt-resend-interval My_MQTT_Resend_Interval \
--foreman-proxy-plugin-remote-execution-script-mqtt-ttl My_MQTT_Time_To_Live
Copy to Clipboard Toggle word wrap

Capsule 服务器日志位于 /var/log/foreman-proxy/proxy.log 中。胶囊服务器使用 Webrick HTTP 服务器(不包括 httpd 或 Puma),因此无法简单地提高其容量。

注意

根据工作负载,主机数量、可用资源和应用调整,您可能会达到 Bug 2244811,这会导致 Capsule 消耗太多内存并最终被终止,从而使其余作业失败。目前,没有通用的临时解决方案。

5.7. PostgreSQL 调优

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

PostgreSQL 作者建议在运行 PostgreSQL 的服务器上禁用透明巨页。更多信息请参阅 第 4.3 节 “禁用透明巨页”

您可以将一组调优应用到 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
    Copy to Clipboard Toggle word wrap

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

  2. 将您的更改应用到卫星服务器。更多信息请参阅 第 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,则它不会显示大量连接的问题,因为数据将完全缓冲。

5.8. redis Tuning

Redis 是一个内存中数据存储。它供卫星中的多个服务使用。Dynflow 和 Pulp 任务系统使用它来跟踪其任务。由于 Satellite 使用 Redis 的方式,其内存消耗应该稳定。

Redis 作者建议在运行 Redis 的服务器上禁用透明巨页。有关它的更多信息,请参阅 第 4.3 节 “禁用透明巨页”

5.9. 胶囊配置调优

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

5.9.1. 胶囊性能测试

在多个胶囊配置中,我们测量了多个测试案例:

Expand
Capsule HW 配置CPURAM

Minimal

4

12 GiB

large

8

24 GiB

额外的大

16

46 GiB

内容交付用例

在下载测试中,在 100, 200, 上,我们同时下载了 2000 个软件包的 40MB 存储库。1000 个主机,我们每一次看到了平均下载持续时间的 50% 改进。有关更精确的数字,请查看下表。

Expand
并发下载主机最小(4 个 CPU 和 12 GiB RAM) → Large (8 个 CPU 和 24 GiB RAM)Large (8 CPU 和 24 GiB RAM)→ Extra Large (16 CPU and 46 GiB RAM)最小(4 个 CPU 和 12 GiB RAM) → Extra Large (16 个 CPU 和 46 GiB RAM)

平均改进

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

~ 40%(例如,平均 4.4 秒内 700 个并发下载)与.每个软件包 2.5 秒)

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

当我们将从卫星服务器下载性能与胶囊式服务器相比,我们只看到 5% 的速度提升了 5% 的速度,但其预期是,与地理上分散的客户端(或不同网络中的客户端)相关,而为了处理负载卫星服务器的一部分,则需要自行处理。在一些较小的硬件配置(8 个 CPU 和 24 GiB)中,卫星服务器无法从 500 多个并发客户端处理下载,而具有相同硬件配置的胶囊式服务器能够服务超过 1000 并且可能更多。

并发注册用例

对于并发注册,瓶颈通常是 CPU 速度,但所有配置都能够在不交换的情况下处理高并发性。用于胶囊的硬件资源对注册性能仅有极小的影响。例如,与具有 4 个 CPU 和 12 GiB RAM 的 Capsule 服务器相比,具有 16 个 CPU 和 46 GiB RAM 的 Capsule 服务器最多有 9% 注册速度。在非常高并发的期间,您可能会在胶囊服务器到 Satellite 服务器通信中遇到超时。您可以使用 /etc/foreman-installer/custom-hiera.yaml 中的以下可调整来增加默认超时:

apache::mod::proxy::proxy_timeout: 600
Copy to Clipboard Toggle word wrap

远程执行用例

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

内容同步用例

在同步 Red Hat Enterprise Linux 6、7、8 BaseOS 和 8 AppStream 的同步测试中,我们没有看到 Capsule 配置之间的显著区别。这将是不同的,用于同步并行数量较多的内容视图。

法律通告

Copyright © 2024 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

© 2026 Red Hat
返回顶部