すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Linux:システム構成の最適化

最終更新日:Nov 09, 2025

このトピックでは、Alibaba Cloud Linux 3 の最適化された構成と一般的なシステム構成パラメーターについて説明します。特定のビジネスシナリオに合わせてカーネルパラメーターを調整できます。

オペレーティングシステムの制限

Alibaba Cloud Linux 3

重要

カーネルパラメーターを変更する前に、次の点に注意してください:

  • パラメーターは、必要に応じて、裏付けとなるデータがある場合にのみ調整してください。カーネルパラメーターを任意に調整しないでください。

  • 各パラメーターの機能を理解してください。カーネルパラメーターは、環境の種類やバージョンによって異なる場合があります。

Alibaba Cloud Linux 3 の最適化された構成

Alibaba Cloud Linux 3 では、次のシステム構成パラメーターが最適化されています。

パフォーマンスの向上

設定項目

説明

net.ipv4.tcp_timeout_init

1000

初期 TCP 再送タイムアウト。

最小値は 2 HZ です。

重要

これは Alibaba Cloud Linux 3 用に開発されたカスタム機能です。長期的なメンテナンスは保証されません。このシステム構成は Alibaba Cloud Linux 4 以降では非推奨です。

net.ipv4.tcp_synack_timeout_init

1000

SYN-ACK メッセージの初期タイムアウト。

最小値は 2 HZ です。

最初の再送後、タイムアウト期間は 2 倍になります。

重要

これは Alibaba Cloud Linux 3 用に開発されたカスタム機能です。長期的なメンテナンスは保証されません。このシステム構成は Alibaba Cloud Linux 4 以降では非推奨です。

net.ipv4.tcp_synack_timeout_max

120000

最大 SYN-ACK タイムアウト。

最小値は 2 HZ です。

SYN-ACK メッセージが再送されると、再送タイムアウト (RT) は、tcp_synack_timeout_init によって設定された初期値から、tcp_synack_timeout_max によって定義された最大値まで、試行ごとに 2 倍になります。

重要

これは Alibaba Cloud Linux 3 用に開発されたカスタム機能です。長期的なメンテナンスは保証されません。このシステム構成は Alibaba Cloud Linux 4 以降では非推奨です。

net.ipv4.tcp_ato_min

40

ACK メッセージのタイムアウト。

この sysctl パラメーターを使用すると、ACK タイムアウト期間を柔軟に制御できます。

有効値: 4 ms から 200 ms。

重要

これは Alibaba Cloud Linux 3 用に開発されたカスタム機能です。長期的なメンテナンスは保証されません。このシステム構成は Alibaba Cloud Linux 4 以降では非推奨です。

net.ipv4.tcp_init_cwnd

10

TCP 輻輳ウィンドウの初期サイズ。

重要

これは Alibaba Cloud Linux 3 用に開発されたカスタム機能です。長期的なメンテナンスは保証されません。このシステム構成は Alibaba Cloud Linux 4 以降では非推奨です。

net.ipv4.tcp_synack_retries

2

サーバーが最終的な ACK メッセージを受信しない場合に、SYN-ACK メッセージの送信を再試行する回数。

ネットワーク品質が良好な場合、3 回の再試行には約 7 秒かかります。

net.ipv4.tcp_slow_start_after_idle

0

TCP 接続がアイドル状態になった後、スロースタートを再開するかどうかを指定します。有効値:

  • 1: はい。

  • 0: いいえ。

/sys/kernel/mm/transparent_hugepage/hugetext_enabled

0

コード巨大ページ機能を制御します。有効値:

  • 0: コード巨大ページを無効にします。

  • 1: バイナリと動的ライブラリに対してのみ巨大ページを有効にします。

  • 2: 実行可能な匿名巨大ページのみを有効にします。

  • 3: 上記の両方のタイプの巨大ページを有効にします。

Hugetext を有効にすると、プログラム内の iTLB miss を減らし、データベースや大規模アプリケーションなど、コードセグメントが大きいワークロードのパフォーマンスを向上させることができます。

重要

これは Alibaba Cloud Linux 3 用に開発されたカスタム機能です。長期的なメンテナンスは保証されません。

リソース使用率の向上

設定項目

説明

net.ipv4.tcp_syn_retries

4

クライアントが SYN-ACK メッセージを受信しない場合に、SYN メッセージの送信を再試行する回数。

初期再送タイムアウトが 1 秒の場合、4 回の再送には約 15 秒かかり、最終的なタイムアウトは約 31 秒後に発生します。

net.ipv4.tcp_retries2

8

ACK メッセージを受信していないアクティブな TCP 接続の合計再送タイムアウトに影響します。

初期 RTO が 200 ms の場合、8 回の再送には約 51 秒かかり、最終的なタイムアウトは約 102 秒後に発生します。

net.ipv4.tcp_tw_timeout

60

TIME_WAIT 状態の TCP socket のタイムアウト期間。

有効値: 1 秒から 600 秒。

詳細については、「TCP TIME-WAIT タイムアウト期間の変更」をご参照ください。

重要

これは Alibaba Cloud Linux 3 用に開発されたカスタム機能です。長期的なメンテナンスは保証されません。このシステム構成は Alibaba Cloud Linux 4 以降では非推奨です。

net.ipv4.tcp_max_tw_buckets

5000

TIME-WAIT 状態で許可される TCP 接続の最大数。

TIME_WAIT 状態の接続は、クライアントがサーバーへの接続を確立するために使用するポート範囲を占有します。同じサーバー ip:port への接続に使用できるポートの最大数は、net.ipv4.ip_local_port_range パラメーターによって決まります。TIME_WAIT 状態の多くの接続がクライアントポートを占有すると、クライアントは connect() 関数を呼び出すときにポートを割り当てることができなくなります。最終的に、クライアントは接続を確立できなくなります。詳細については、「Linux ECS インスタンスで「TCP: time wait bucket table overflow」エラーが多数発生するのはなぜですか?」をご参照ください。

ネットワークセキュリティ

設定項目

説明

net.ipv4.conf.all.rp_filter

0

現在のすべてのネットワークインターフェースカード (NIC) のリバースパスフィルタリングを制御します。有効値:

  • 0: リバースパスフィルタリングを無効にします。

  • 1: 厳密なリバースパスフィルタリングを有効にします。NIC は各受信パケットを検証します。パケットのリバースパスが受信インターフェースと一致しない場合、パケットは破棄されます。

  • 2: 緩やかなリバースパスフィルタリングを有効にします。NIC は、各受信パケットのソースアドレスが到達可能かどうかを確認します。リバースパスが任意のインターフェースを介して到達可能である場合、チェックは成功します。それ以外の場合、パケットは破棄されます。

警告

このパラメーターが 1 に設定されている場合、パケット損失が発生する可能性があります。複数の NIC を持つシステムでは、受信 NIC と送信 NIC が異なる場合、パケットは破棄されます。したがって、マルチ NIC システムではこの設定を有効にしないでください。

net.ipv4.conf.default.rp_filter

0

新しい NIC のリバースパスフィルタリングを制御します。有効値:

  • 0: リバースパスフィルタリング機能を無効にします。

  • 1: リバースパスフィルタリング機能の厳密なチェックを有効にします。チェックが有効になると、NIC は各受信パケットを検証します。パケットのリバースルートのポートが受信ポートと一致しない場合、チェックは失敗し、パケットは破棄されます。

  • 2: リバースパスフィルタリング機能の緩やかなチェックを有効にします。NIC は、各受信パケットのソースアドレスが到達可能かどうかを確認します。リバースルートが任意のポートを介して到達可能である場合、チェックは成功します。チェックが失敗した場合、パケットは破棄されます。

警告

このパラメーターが 1 に設定されている場合、パケット損失が発生する可能性があります。複数の NIC が搭載されていて、受信ポートと送信ポートが異なる NIC にある場合、パケットは破棄されます。したがって、マルチ NIC システムではリバースパスフィルタリング機能を有効にしないでください。

net.ipv4.conf.default.arp_announce

2

新しい NIC の ARP リクエストにおけるソース IP アドレスの選択を制御します。有効値:

  • 0: デフォルトの動作。任意のインターフェース上の任意のローカルアドレスをソース IP アドレスとして使用します。

  • 1: 厳密モード。宛先 IP アドレスと同じサブネットからソース IP アドレスを使用しようとします。送信インターフェースにそのようなアドレスがない場合、インターフェースのプライマリアドレスが使用されます。

  • 2: 最も厳密なモード。カーネルは、送信ポートの IP アドレスをソース IP アドレスとして使用する必要があります。カーネルは、厳密モード (arp_announce=1) で説明されている手順を使用して、ソース IP アドレスとして IP アドレスを選択します。カーネルが利用可能なソース IP アドレスを見つけられない場合、カーネルは ARP リクエストを送信するポートの IP アドレスをソース IP アドレスとして使用します。ARP リクエストを送信するポートの IP アドレスが利用できない場合、ARP リクエストは送信されません。

net.ipv4.conf.all.arp_announce

2

現在のすべての NIC の ARP リクエストにおけるソース IP アドレスの選択を制御します。有効値:

  • 0: デフォルトモード。デフォルトでは、システムは利用可能な任意の IP アドレスを優先ソース IP アドレスとして使用します。このモードでは、システムが ARP リクエストを送信するとき、カーネルは利用可能なローカルアドレスをランダムに選択して、ARP リクエストのソース IP アドレスとして使用する場合があります。

  • 1: 厳密モード。ほとんどの場合、カーネルは宛先 IP アドレスのサブネットとは異なるサブネットの IP アドレスをソース IP アドレスとして使用しません。カーネルは、宛先 IP アドレスと同じサブネット内の IP アドレスをソース IP アドレスとして選択します。そのようなアドレスが利用できない場合、カーネルはポートのプライマリ IP アドレスを使用します。

  • 2: 最も厳密なモード。カーネルは、送信ポートの IP アドレスをソース IP アドレスとして使用する必要があります。カーネルは、厳密モード (arp_announce=1) で説明されている手順を使用して、ソース IP アドレスとして IP アドレスを選択します。カーネルが利用可能なソース IP アドレスを見つけられない場合、カーネルは ARP リクエストを送信するポートの IP アドレスをソース IP アドレスとして使用します。ARP リクエストを送信するポートの IP アドレスが利用できない場合、ARP リクエストは送信されません。

net.ipv4.tcp_syncookies

1

SYN フラッド攻撃からの保護を制御します。有効値:

  • 0: TCP カーネルの SYN フラッド保護を無効にします。

  • 1: TCP カーネル保護を有効にして、SYN フラッド攻撃を防ぎます。

  • 2: SYN フラッド攻撃を防ぐために TCP カーネル保護を無条件で有効にします。これはテストシナリオで使用されます。

Alibaba Cloud Linux 3 のその他の一般的なシステム構成

パフォーマンスの向上

設定項目

デフォルト値

説明

net.ipv4.ip_local_port_range

32768 60999

ポート番号の範囲。

クライアントが接続を確立すると、TCP/UDP プロトコルは必要に応じてローカルポート番号を変更できます。この範囲のほとんどのポートが占有されている場合、カーネルが新しいポートを線形検索すると、CPU 使用率が高くなる可能性があります。

net.ipv4.tcp_rmem

4096 131072 6291456

単一の TCP socketrecvbuf のサイズ。単位: バイト。

初期値はインスタンスタイプに依存しません。最初の値は最小サイズ、2 番目の値はデフォルトサイズ、3 番目の値は最大サイズです。インスタンスのメモリ使用量に基づいてこれらの値を増やしてください。

net.ipv4.tcp_wmem

4096 16384 4194304

単一の TCP socketsendbuf のサイズ。単位: バイト。

初期値はインスタンスタイプに依存しません。最初の値は最小サイズ、2 番目の値はデフォルトサイズ、3 番目の値は最大サイズです。インスタンスのメモリ使用量に基づいてこれらの値を増やしてください。

net.core.netdev_max_backlog

1000

percpu パラメーターは、ソケットバッファー (skb) キューの最大長を指定します。

これらは、主に受信パケットステアリング (RPS) や、loopbackveth などのホスト内通信に使用されるキャッシュキューです。

net.core.somaxconn

4096

単一の socketListen backlog キューの最大長。

多くの短命な接続を処理する NGINX などのアプリケーションでは、この値を増やすことをお勧めします。

net.core.rmem_max

212992

単一の socket で許可される最大の recvbuf 値。

このパラメーターは、主にカーネルが単一の UDP socket 上で多数の接続を処理する必要がある場合に使用されます。

TCP では、このオプションは setsockopt() を呼び出して SO_RCVBUF を構成する場合にのみ使用されます。指定する recvbuf 値は、この値を超えることはできません。setsockopt() を呼び出さない場合、tcp recvbuf パラメーターは net.ipv4.tcp_rmem パラメーターによってのみ制限されます。

net.core.wmem_max

212992

単一の socket で許可される最大の sendbuf 値。

これは、主に単一の UDP socket 上で多数の接続を処理するために使用されます。

TCP では、このオプションは setsockopt() 関数を呼び出して SO_SNDBUF を構成する場合にのみ使用されます。指定する sendbuf 値は、この値を超えることはできません。setsockopt() 関数を呼び出さない場合、tcp sendbuf パラメーターは net.ipv4.tcp_rmem パラメーターによってのみ制限されます。

/sys/block/<device>/queue/nomerges

0

デバイスの merge 属性が無効になっているかどうかを指定します。有効値:

  • 0: あらゆるタイプの merge を有効にします。

  • 1: 複雑な merge 機能を無効にし、単純な one-shot merge 機能を有効にします。

  • 2: merge 機能のすべてのモードを無効にします。

I/O の読み取りおよび書き込みアドレスが隣接している場合、カーネル I/O プロトコルスタックは merge 機能を使用して複数の I/O 操作を単一の大きな I/O にマージし、それをハードウェアに送信して処理することで、ハードウェアの I/O パフォーマンスを大幅に向上させます。

I/O の読み取りおよび書き込みアドレスがランダムである場合、I/O 操作をマージする可能性は低くなります。ただし、マージを実行できるかどうかを確認すると、CPU サイクルが消費され、パフォーマンスに影響します。デバイスのマージ機能を無効にして、パフォーマンスを向上させることができます。

/sys/block/<device>/queue/read_ahead_kb

4096

デバイスファイルシステムの read-ahead size

カーネルはデフォルト値を 128 KB に設定します。tuned サービスは値を 4,096 KB に増やします。

I/O 負荷のほとんどがランダム I/O で構成されている場合は、この値を低くして (たとえば 128 KB に)、ビジネスパフォーマンスを向上させます。

/sys/block/<device>/queue/rq_affinity

1

どの CPU が I/O 完了割り込みを処理するかを指定します。有効値:

  • 0: I/O 完了割り込みは、割り込みをトリガーした CPU で処理されます。

  • 1: I/O 完了割り込みは、I/O request を送信した CPU を含む group に送信されます。 group は一般的に単一の socket を指し、その同じ socket 上の CPU は cache を共有します。 この設定では、I/O 完了割り込みは実際には group の最初の CPU に送信されます。 この設定の利点は、キャッシュフレンドリであり、処理が高速であることです。 欠点は、I/O 操作が頻繁に実行されると、グループ内の最初の CPU に高い負荷がかかることです。

  • 2: I/O 完了割り込みは、I/O request を送信した CPU に送信されます。この設定の利点は、CPU の負荷が比較的均等になることです。欠点は、前の設定よりも効率が低いことです。

システムの I/O 負荷に基づいて送信メソッドを調整します。

/sys/block/<device>/queue/scheduler

mq-deadline (単一キュー) または

none (複数キュー)

I/O デバイススケジューラ。

Alibaba Cloud Linux 3 は、mq-deadlinekyberbfq、および none の各スケジューラをサポートしています。

デフォルトでは、blk-mq デバイスは、単一のキューが存在する場合は mq-deadline を選択し、複数のキューが存在する場合は none を選択します。

ほとんどの場合、デフォルト設定が使用されます。読み取りレイテンシが低いなど、特別な要件がある場合は、kyber スケジューラに切り替えて、対応するレイテンシ値を指定できます。

/sys/kernel/mm/pagecache_limit/enabled

0

Linux カーネルでPage Cache 制限機能を有効にするかどうかを指定します。有効値:

  • 0: Page Cache 制限機能を無効にします。

  • 1: Page Cache 制限機能を有効にします。

重要

これは Alibaba Cloud Linux 3 用に開発されたカスタム機能です。長期的なメンテナンスは保証されません。

/sys/fs/cgroup/memory/memory.pagecache_limit.enable

0

memcgPage Cache 制限機能を有効にするかどうかを指定します。有効値:

  • 0: 現在の memcgPage Cache 制限機能を無効にします。

  • 1: 現在の memcgPage Cache 制限機能を有効にします。

/sys/fs/cgroup/memory/memory.pagecache_limit.size

0

現在の memcgPage Cache 使用量の制限をバイト単位で指定します。

有効値: 0 から現在の memcg の memory.limit_in_bytes 値まで。memory.limit_in_bytes 値を指定できます。

  • 0: グローバルおよび memcg のスイッチ設定に関係なく、現在の memcgPage Cache 制限機能を無効にします。

  • 0 以外の値: 現在の memcg treePage Cache 使用量の上限を指定します。

ネットワークセキュリティ

設定項目

デフォルト値

説明

net.ipv4.conf.all.arp_ignore

0

システムが現在のすべての NIC で受信した外部 ARP リクエストに応答するかどうかを制御します。有効値:

  • 0: 受信 NIC に関係なく、ループバックインターフェース上のアドレスを含む、任意のローカル IP アドレスに対する ARP リクエストに応答します。

  • 1: ターゲット IP アドレスが受信 NIC で構成されている場合にのみ応答します。

  • 2: ターゲット IP アドレスが受信 NIC で構成されており、リクエストのソース IP アドレスが NIC と同じサブネットにある場合にのみ応答します。

たとえば、eth0eth1 の IP アドレスに対する ARP リクエストを受信した場合、値が 0 であれば ARP 応答を送信します。値が 1 または 2 の場合、リクエストの宛先 IP アドレスが受信ネットワークインターフェースに属していないため、応答しません。

net.ipv4.conf.default.arp_ignore

0

システムが新しい NIC で受信した外部 ARP リクエストに応答するかどうかを制御します。有効値:

  • 0: 宛先 IP アドレスが ARP リクエストを受信する NIC に属しているかどうかに関係なく、ループバック IP アドレスを含むローカル IP アドレス宛ての ARP リクエストに応答して ARP 応答を送信します。

  • 1: 宛先 IP アドレスが ARP リクエストを受信するローカル NIC にのみ属する ARP リクエストに応答して ARP 応答を送信します。

  • 2: ソース IP アドレスが NIC と同じ CIDR ブロックにある場合に限り、ARP リクエストを受信する NIC のローカル IP アドレス宛ての ARP リクエストにのみ応答して ARP 応答を送信します。

たとえば、eth0 は、宛先 IP アドレスが eth1 に属する ARP リクエストを受信します。net.ipv4.conf.all.arp_ignore が 0 に設定されている場合、eth0 は ARP 応答を送信します。net.ipv4.conf.all.arp_ignore が 1 または 2 に設定されている場合、eth0 は ARP リクエストに応答しません。これは、受信した ARP リクエスト内の eth1 の宛先 IP アドレスが eth0 と同じ CIDR ブロックに属していないためです。

net.ipv4.ip_forward

0

IPv4 転送機能を有効にするかどうかを指定します。有効値:

  • 0: IP 転送を無効にします。

  • 1: IP 転送を有効にします。

リソース使用率

設定項目

デフォルト値

説明

net.ipv4.tcp_fin_timeout

60

socket 接続をアクティブに切断する側について、TCP 接続が FIN-WAIT-2 状態のままでいる時間。単位: 秒。

これは、ピアが接続を閉じるのを待つか、ピアからデータを受信するために使用されます。この値を変更して、システムが FIN-WAIT-2 状態の TCP 接続を閉じるのを高速化します。

実際のビジネスシナリオでは、netstat -ant | grep FIN_WAIT2 | wc -l コマンドを実行して、FIN-WAIT-2 状態の TCP 接続の数を表示できます。ほとんどの場合、デフォルト設定の 60 秒を使用することをお勧めします。FIN-WAIT-2 状態の TCP 接続が多数ある場合は、値を小さくして TCP 接続の終了を高速化できます。詳細については、「Linux ECS インスタンスで FIN_WAIT2 状態の TCP 接続が多数存在するのはなぜですか?」をご参照ください。

net.ipv4.tcp_tw_reuse

2

TIME-WAIT 状態の sockets 上での TCP 接続の確立を許可するかどうかを指定します。有効値:

  • 0: オフ。

  • 1: グローバルに有効。

  • 2: これは loopback に対してのみ有効です。

net.ipv4.tcp_keepalive_time

7200

keepalive 機能が有効な場合に keepalive メッセージが送信される間隔。単位: 秒。

これは、TCP 接続が有効かどうかを確認するために使用されます。

システムの制限

設定項目

デフォルト値

説明

fs.aio-max-nr

65536

同時 Linux 非同期 I/O (AIO) リクエストの最大数。

このパラメーターの値は、システムが Linux aio をどの程度使用するかに依存します。たとえば、データベースや検索シナリオでは、大きな aio-max-nr 値が必要です。

aio-max-nraio-nr と連携して動作します。aio-nr は、io_setup(unsigned nr_events, aio_context_t *ctx_idp) システムコールの最初のパラメーターの値を累積することによって取得されます。aio-nr + nr_events > aio-max-nr の場合、io_setup() 呼び出しは -EAGAIN エラーを返します。したがって、aio-nr の値を監視して、ビジネス環境で aio-max-nr に適切な値を設定する必要があります。

fs.file-max

システム初期化中に予約済みメモリサイズに基づいて設定されます。

システムが許可するファイルハンドルの最大数。

システム初期化中に予約済みメモリの最大 10% をファイルハンドルで使用できます。このパラメーターのデフォルト値は、8,192 の NR_FILE 値以上である必要があります。

特別な要件がない場合は、デフォルト値を使用してください。

fs.nr_open

1048576

プロセスが許可されるオープンファイルハンドルの最大数。

アプリケーションの制限は、resource limit と RLIMIT_NOFILE に依存します。ほとんどの場合、ulimit -n コマンドを実行して nr_open 値を設定できますが、その値は fs.nr_open 値を超えることはできません。

モニタリング

設定項目

デフォルト値

説明

net.netfilter.nf_conntrack_max

262144

nf_conntrack モジュールのハッシュテーブルでサポートされる接続の最大数。

デフォルト値は、次の数式を使用して計算されます: net.netfilter.nf_conntrack_max = 4 × net.netfilter.nf_conntrack_buckets

詳細については、「ECS インスタンス上のアプリケーションで時々パケット損失が発生し、カーネルログ (dmesg) に「kernel: nf_conntrack: table full, dropping packet」というエラーメッセージが含まれる場合はどうすればよいですか?」をご参照ください。

net.netfilter.nf_conntrack_tcp_timeout_time_wait

120

nf_conntrack モジュール内の TIME_WAIT 状態の TCP 接続のタイムアウト期間。単位: 秒。

net.netfilter.nf_conntrack_tcp_timeout_established

432000

確立された TCP 接続が非アクティブのために iptables によって閉じられるまでのタイムアウト期間。単位: 秒。

fs.inotify.max_queued_events

16384

inotify メカニズムの未処理イベントの最大キュー長。

inotify は、ファイルとディレクトリの両方を監視するためにカーネルによって提供されるインフラストラクチャです。ディレクトリが監視されると、inotify はディレクトリ自体と、そのディレクトリ内のファイルのファイルシステムイベントを監視できます。

特別な要件がない場合は、デフォルト値を使用してください。

fs.inotify.max_user_instances

128

作成できる inotify インスタンスの最大数。

このパラメーターは、過剰な inotify インスタンスの作成によるメモリなどのシステムリソースの過剰な消費を防ぐために使用されます。

特別な要件がない場合は、デフォルト値を使用してください。

fs.inotify.max_user_watches

8192

追加できる watches の最大数。

watch は、inotify の用語で、監視する必要があるオブジェクトを記述します。watch は通常、2 つのコンポーネントを含みます。1 つは、監視対象のファイルまたはディレクトリを指すパス名です。もう 1 つは、ファイルアクセスイベントなど、そのファイルまたはディレクトリに対して監視するイベントの組み合わせです。マスクを使用してイベントの組み合わせを記述できます。

/sys/block/<device>/queue/hang_threshold

5000

システム操作中に長時間返されない I/O 操作を検出します。単位: ms。

特定のビジネスシナリオに基づいてこれを変更できます。詳細については、「ファイルシステムとブロックレイヤーでの I/O ハングの検出」をご参照ください。

重要

これは Alibaba Cloud Linux 3 用に開発されたカスタム機能です。長期的なメンテナンスは保証されません。