5.2. Puma のチューニング


Puma は、Foreman 関連のリクエストをクライアントに提供するために使用される ruby アプリケーションサーバーです。多数のクライアントまたは頻繁な操作を処理することが想定されている Satellite 設定では、Puma を適切にチューニングすることが重要です。

5.2.1. Puma スレッド数

Puma ワーカーごとの Puma スレッドの数を設定するには、threads_min および threads_max の値を使用します。

threads_min の値は、ワーカーの起動時に各ワーカーが生成するスレッドの数を決定します。その後、同時リクエストが発生し、より多くのスレッドが必要になると、ワーカーは上限である thread_max に達するまでさらに多くのワーカーを生成します。

Puma スレッドが少ないと Satellite Server のメモリー使用量が増えるため、threads_minthread_max と同じ値に設定することを推奨します。

たとえば、同時登録テストを使用して、8 CPU および 40 GiB RAM を搭載した仮想マシンでこれらの 2 つのセットアップを比較しました。これらはどちらも used --foreman-foreman-service-puma-threads-max=16 および --foreman-foreman-service-puma-workers=2 です--foreman-foreman-service-puma-threads-min= 16 を使用して最小 Puma スレッドを 16 に設定すると、0 と比較してメモリー使用量が約 12% 少なくなります。

5.2.2. Puma のワーカー数とスレッド数の自動チューニング

Puma のワーカーとスレッドの値を satellite-installer で指定しなかった場合、またはそれらが Satellite 設定に存在しない場合、satellite-installer はバランスの取れたワーカー数を設定します。satellite-installer は次の式に従います。

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

ほとんどの場合はこれで問題ありませんが、使用パターンによっては、(他の Satellite コンポーネントがリソースを使用できるように) Puma 専用のリソースの量を制限するなどの理由で、チューニングが必要になる場合があります。各 Puma ワーカーは約 1 GiB の RAM を消費します。

現在の Satellite Server 設定を表示する

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

現在アクティブな Puma ワーカーを表示する

# systemctl status foreman
Copy to Clipboard Toggle word wrap

5.2.3. Puma のワーカー数とスレッド数の手動チューニング

「Puma のワーカー数とスレッド数の自動チューニング」 を利用しない場合は、これらの調整パラメーターにカスタム数値を適用できます。以下の例では、2 つのワーカーと、最小 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

変更を Satellite Server に適用します。詳細は、「設定の適用」 を参照してください。

5.2.4. 推奨される Puma のワーカー数とスレッド数

さまざまなチューニングプロファイルのスレッドとワーカーの設定を推奨するために、Red Hat はさまざまなチューニングプロファイルを使用して、Satellite で Puma チューニングテストを実施しました。このテストで使用した主なテストは、さまざまなワーカー数とスレッド数を使用した、次の組み合わせによる同時登録です。当社の推奨値は、純粋に同時登録のパフォーマンスに基づいているため、正確なユースケースを反映していない可能性があります。たとえば、セットアップが非常にコンテンツ指向で、パブリッシュとプロモートが多い場合は、Pulp と PostgreSQL を優先して Puma によって消費されるリソースを制限することもできます。

Expand
名前ホスト数RAMコア最小と最大の両方に推奨される Puma スレッド数推奨される Puma ワーカー数

default

0  -  5000

20 GiB

4

16

4  -  6

medium

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 スレッドを使用しますが、上記の表のすべてのチューニングプロファイルでは、16 スレッドを使用することを推奨します。これは、4 スレッドでのセットアップと比較して、16 スレッドで最大 23% のパフォーマンス向上 (8 で 14%、32 で 10%) が見られたためです。

Red Hat はこの推奨値を明らかにするために、非常に特殊なユースケースである同時登録テストケースを使用しました。これは、(登録だけでなく) よりバランスの取れたユースケースを持つ Satellite では異なる場合があります。デフォルトの最小/最大 5 スレッドを維持することも良い選択です。

この推奨値の根拠となった測定値の一部を以下に示します。

Expand
 4 ワーカー、4 スレッド4 ワーカー、8 スレッド4 ワーカー、16 スレッド4 ワーカー、32 スレッド

向上率

0%

14%

23%

10%

default セットアップ (4 CPU) では 4 - 6 つのワーカーを使用します。ワーカー 5 つの場合は、ワーカー 2 つと比較した場合、約 25% パフォーマンスが向上しました。しかし、ワーカー 8 つの場合は、ワーカー 2 つと比較した場合、パフォーマンスが 8% 低下しました。以下の表を参照してください。

Expand
 2 ワーカー、16 スレッド4 ワーカー、16 スレッド6 ワーカー、16 スレッド8 ワーカー、16 スレッド

向上率

0%

26%

22%

-8%

medium セットアップ (8 CPU) では 8 - 12 個のワーカーを使用します。以下の表を参照してください。

Expand
 2 ワーカー、16 スレッド4 ワーカー、16 スレッド8 ワーカー、16 スレッド12 ワーカー、16 スレッド16 ワーカー、16 スレッド

向上率

0%

51%

52%

52%

42%

32 CPU のセットアップでは 16 - 24 個のワーカーを使用します (これは 90 GiB RAM マシンでテストされました。システムがスワッピングを開始し、メモリーがここでの 1 つの要因となっていることが判明したためです。適切な extra-large には 128 GiB が必要です)。ワーカー数をそれ以上に増やすと、高い同時登録レベルでテストした際に問題が発生したため、このような設定は推奨できません。

Expand
 4 ワーカー、16 スレッド8 ワーカー、16 スレッド16 ワーカー、16 スレッド24 ワーカー、16 スレッド32 ワーカー、16 スレッド48 ワーカー、16 スレッド

向上率

0%

37%

44%

52%

失敗が多すぎる

失敗が多すぎる

5.2.5. Puma ワーカー数の設定

CPU が十分にある場合は、ワーカーを追加するとパフォーマンスが向上します。例として、8 CPU と 16 CPU の Satellite セットアップを比較しました。

Expand
表5.1 ワーカー数の効果をテストするために使用した satellite-installer のオプション
8 CPU、40 GiB RAM を搭載した Satellite 仮想マシン16 CPU、40 GiB RAM を搭載した Satellite 仮想マシン

--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 のセットアップでは、ワーカー数を 2 から 16 に変更すると、同時登録時間が 36% 向上しました。16 CPU のセットアップでは、同じ変更で 55% の向上が見られました。

ワーカーを追加すると、Satellite が処理できる同時登録の総数も増やすことができます。当社の測定では、2 つのワーカーを使用したセットアップで最大 480 の同時登録を処理できましたが、ワーカーを追加すると状況が改善されました。

5.2.6. Puma スレッド数の設定

スレッド数が多いほど、ホストを並行して登録する時間を短縮できます。例として、次の 2 つの設定を比較しました。

Expand
8 CPU、40 GiB RAM を搭載した Satellite 仮想マシン8 CPU、40 GiB RAM を搭載した Satellite 仮想マシン

--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

総スレッド数はそのままにして、使用するワーカー数を増やすと、同時登録のシナリオで約 11% の速度向上が得られます。さらに、ワーカーを追加しても CPU と RAM の消費量は増加しませんでしたが、パフォーマンスは向上しました。

5.2.7. Puma DB プールの設定

$db_pool の実効値は、自動的に $foreman::foreman_service_puma_threads_max と等しくなるように設定されます。これは $foreman::db_pool$foreman::foreman_service_puma_threads_max の最大値ですが、どちらもデフォルト値が 5 であるため、最大スレッド数が 5 を超えると、データベース接続プールが自動的に同じ量だけ増加します。

/var/log/foreman/production.log に、ActiveRecord::ConnectionTimeoutError: could not obtain a connection from the pool within 5.000 seconds (waited 5.006 seconds); all pooled connections were in use というエラーが見られたら、この値を増やすことを推奨します。

現在の 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

変更を Satellite Server に適用します。詳細は、「設定の適用」 を参照してください。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat