ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris カーネルのチューンアップ・リファレンスマニュアル Oracle Solaris 11 Information Library (日本語) |
1. Oracle Solaris システムのチューニングの概要
2. Oracle Solaris カーネルチューニング可能パラメータ
4. インターネットプロトコル群のチューニング可能パラメータ
RFC (Internet Request for Comments)
_icmp_err_interval と _icmp_err_burst
_respond_to_echo_broadcast と _respond_to_echo_multicast (ipv4 または ipv6)
_send_redirects (ipv4 または ipv6)
_icmp_return_data_bytes (ipv4 または ipv6)
直接接続していないホストに対する TCP 遅延肯定応答 (ACK) タイマーのタイムアウト値を指定します。
RFC 1122 の 4.2.3.2 を参照してください。
100 ミリ秒
1 ミリ秒から 1 分
はい
このパラメータには、500 ミリ秒を超える値を設定しないでください。
次の場合は、値を増やします。
ネットワークリンクが遅く (57.6 Kbps 未満)、最大セグメントサイズ (MSS) が 512 バイトを超える
この間隔が複数のTCP セグメントを受信するには短すぎる
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
直接接続しているホストに対する TCP 遅延肯定応答 (ACK) タイマーのタイムアウト値を指定します。
RFC 1122 の 4.2.3.2 を参照してください。
50 ミリ秒
10 から 500 ミリ秒
はい
このパラメータには、500 ミリ秒を超える値を設定しないでください。
次の場合は、値を増やします。
ネットワークリンクが遅く (57.6 Kbps 未満)、最大セグメントサイズ (MSS) が 512 バイトを超える
この間隔が複数のTCP セグメントを受信するには短すぎる
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
肯定応答 (ACK) が生成される前にリモート宛先 (直接接続していない) から受け取られる TCP セグメントの最大数を指定します。TCP セグメントは、個々の接続の最大セグメントサイズ (MMS) 単位で表されます。このパラメータに 0 か 1 を設定すると、すべてのセグメントが 1 MSS の長さであるとみなされ、遅延 ACK は使用されなくなります。実際の数は、接続ごとに動的に計算されます。この値はデフォルトの最大値です。
2
0 から 16
はい
この値は変更しないでください。ただし、遅延 ACK の影響でネットワークトラフィックが著しく混雑するような状況では、この値を減らします。ただし、2 より小さくしないでください。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
肯定応答 (ACK) が生成される前に宛先 (直接接続している) から受け取られる TCP セグメントの最大数を指定します。TCP セグメントは、個々の接続の最大セグメントサイズ (MMS) 単位で表されます。このパラメータに 0 か 1 を設定すると、すべてのセグメントが 1 MSS の長さであるとみなされ、遅延 ACK は使用されなくなります。実際の数は、接続ごとに動的に計算されます。この値はデフォルトの最大値です。
8
0 から 16
はい
この値は変更しないでください。ただし、遅延 ACK の影響でネットワークトラフィックが著しく混雑するような状況では、この値を減らします。ただし、2 より小さくしないでください。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
このパラメータが有効になっていると (デフォルトの設定)、ウィンドウスケールオプションの値が 0 の場合でも、TCP は常にウィンドウスケールオプションを指定して SYN セグメントを送信します。ウィンドウスケールオプションの指定された SYN セグメントを受信すると、パラメータが無効になっている場合でも、TCP は、ウィンドウスケールオプションを指定して SYN セグメントに応答します。オプションの値は受信ウィンドウサイズに従って設定されます。
ウィンドウスケールオプションについては、RFC 1323 を参照してください。
1 (有効)
0 (無効)、1 (有効)
はい
ウィンドウスケールオプションをサポートしていない古い TCP スタックとの相互運用性の問題がある場合は、このパラメータを無効にしてください。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
1 が設定されていると、TCP は常にタイムスタンプオプションを指定して SYN セグメントを送信します。TCP は、タイムスタンプオプションの指定された (0 の場合もある) SYN セグメントを受信すると、タイムスタンプオプションを指定して SYN セグメントに応答します。
0 (無効)
0 (無効)、1 (有効)
はい
往復時間 (RTT) や TCP シーケンス番号ラップアラウンドを正確に測定したい場合、有効にします。
このオプションを有効にする理由については、RFC 1323 を参照してください。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
デフォルトの送信ウィンドウサイズをバイト数で指定します。ルートごとに異なる値を設定する方法については、後述の「ルート別のメトリック」を参照してください。「max_buf」も参照してください。
49,152
4096 から 「max_buf」の現在の値
はい
アプリケーションは setsockopt(3XNET) SO_SNDBUF を使って、送信バッファーを接続ごとに変更できます。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
デフォルトの受信ウィンドウサイズをバイト数で指定します。ルートごとに異なる値を設定する方法については、後述の「ルート別のメトリック」を参照してください。「max_buf」と 「_recv_hiwat_minmss」も参照してください。
128,000
2048 から 「max_buf」の現在の値
はい
アプリケーションは setsockopt(3XNET) SO_RCVBUF を使って、受信バッファーを接続ごとに変更できます。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
送信および受信バッファーサイズの最大値をバイト数で指定します。このパラメータは、setsockopt(3XNET) を使用するアプリケーションによって設定される送信バッファーサイズと受信バッファーサイズを制御します。
1,048,576
128,000 から 1,073,741,824
はい
高速ネットワーク環境で TCP 接続を行う場合は、ネットワークリンクの速度に合わせて値を増やします。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
TCP 輻輳ウィンドウ (cwnd) の最大値をバイト数で指定します。
TCP 輻輳ウィンドウについては、RFC 1122 と 2581 を参照してください。
1,048,576
128 から 1,073,741,824
はい
アプリケーションが setsockopt(3XNET) を使用してウィンドウサイズに _cwnd_max より大きい値を設定しようとしても、使用される実際のウィンドウが _cwnd_max を超えることはありません。したがって、_max_buf は _cwnd_max より大きくするべきです。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
輻輳ウィンドウ (cwnd) の初期サイズの最大値を TCP 接続の MSS 単位で指定します。
輻輳ウィンドウの初期サイズがどのように計算されるかについては、RFC 2414 を参照してください。
4
1 から 4
はい
この値は変更しないでください。
特殊な状況下で cwnd の初期サイズがネットワークの輻輳を招く場合は、この値を減らします。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
輻輳ウィンドウが 1 再送タイムアウト (RTO) の間アイドルにされた (セグメントをまったく受信しなかった) あとの輻輳ウィンドウのサイズを TCP 接続の MSS 単位で指定します。
輻輳ウィンドウの初期サイズがどのように計算されるかについては、RFC 2414 を参照してください。
4
1 から 16,384
はい
詳細は、「_slow_start_initial」を参照してください。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
2 が設定されていると、TCP は常に選択的肯定応答 (SACK) 許可オプションを指定して SYN セグメントを送信します。SACK 許可オプションとして値 1 が指定されている SYN セグメントを受信した場合、TCP は SACK 許可オプションを指定して応答します。値 0 が設定されている場合は、着信セグメントに SACK 許可オプションが指定されているかどうかにかかわらず、TCP は SACK 許可オプションを送信しません。
SACK オプションについては、RFC 2018 を参照してください。
2 (自発的に有効にする)
0 (無効)、1 (受動的に有効にする)、2 (自発的に有効にする) のいずれか
はい
SACK 処理を行うと TCP 再送のパフォーマンスが向上するため、自発的に有効にします。自発的に有効にすると相手方が混乱するおそれがある場合は、1 を設定します。この場合、SACK 処理は、着信接続で SACK 処理が許可されているときにのみ行われます。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
0 が設定されていると、TCP は、セキュリティー上の理由により、着信接続に対して IP ソースルーティングオプションを逆方向に使用しません。1 が設定されている場合は、通常どおりソースルーティングを逆方向に使用します。
0 (無効)
0 (無効)、1 (有効)
はい
診断のために IP ソースルーティングが必要な場合は、有効にします。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
TCP 接続を TIME-WAIT 状態に保つ時間をミリ秒で指定します。
RFC 1122 の 4.2.2.13 を参照してください。
600,000 (60 秒)
1 秒から 10 分
はい
この値は 60 秒より小さくしないでください。
このパラメータの変更方法については、RFC 1122 の 4.2.2.13 を参照してください。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
ECN (Explicit Congestion Notification、明示的輻輳通知) のサポートを制御します。
このパラメータが 0 に設定されていると、TCP は、ECN 機構をサポートしている接続先とのネゴシエーションを行いません。
接続開始時にこのパラメータが 1 に設定されていると、TCP は、ECN 機構をサポートしていることを接続先に通知しません。
ただし、接続先が SYN セグメントで ECN 機構をサポートしていることを示した場合、TCP は、新しい着信接続要求を受けた際に、ECN 機構をサポートしていることを接続先に通知します。
このパラメータを 2 に設定すると、TCP は接続を受け付けた時点で ECN 機構に関して接続先とネゴシエーションを行います。さらに、TCP は自発的な送信接続を行う際に、送信する SYN セグメント内で、ECN 機構をサポートしていることを示します。
1 (受動的に有効にする)
0 (無効)、1 (受動的に有効にする)、2 (自発的に有効にする) のいずれか
はい
TCP は、ECN を利用して、輻輳制御の処理を効率化できます。ただし、この機構により、既存の TCP 実装やファイアウォール、NAT などのネットワークデバイスが混乱する場合もあります。混乱するデバイスは IETF 非準拠です。
これらのデバイスを考慮し、このパラメータのデフォルト値は 1 に設定されています。ただし、まれに、受動的に有効にした場合でも問題が生じる場合があります。必要がある場合以外は、パラメータを 0 に設定しないでください。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
accept(3SOCKET) によって受け付けられるのを待っている TCP リスナーの、保留状態の TCP 接続のデフォルトの最大数を指定します。「_conn_req_max_q0」も参照してください。
128
1 から 4,294,967,295
はい
複数の接続要求を受けることのある Web サーバーのようなアプリケーションでは、着信頻度に応じてこのデフォルト値を増やすことができます。
このパラメータに著しく大きい値を設定しないでください。保留状態の TCP 接続はメモリーを過剰に使用することがあります。さらに、保留状態の TCP 接続の数が多すぎて、アプリケーションが接続要求を適時に処理できない場合は、新しい着信要求が拒否されることがあります。
_conn_req_max_q を増やしても、アプリケーションでそれだけの数の保留状態の TCP 接続を持てるとは限りません。アプリケーションでは、listen(3SOCKET) を使用して、保留状態の TCP 接続の最大数をソケットごとに変更できます。このパラメータは、アプリケーションが listen() を使用して設定できる最大値を表します。つまり、このパラメータに非常に大きな値を設定しても、あるソケットに対する実際の最大数は、listen() に指定された値によっては _conn_req_max_q よりもはるかに少ないことがあります。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
単一の TCP リスナーが持つことができる、不完全な (3 段階ハンドシェークがまだ終わっていない) 保留状態の TCP 接続のデフォルトの最大数を指定します。
TCP の 3 段階ハンドシェークについては、RFC 793 を参照してください。「_conn_req_max_q」も参照してください。
1024
0 から 4,294,967,295
はい
きわめて多くの接続要求を受信することがある Web サーバーのようなアプリケーションでは、着信頻度に応じてこのデフォルト値を増やすことができます。
_conn_req_max_q0 と、各ソケットについて保留状態にある接続の最大数との関係は、次のとおりです。
接続要求を受信すると、TCP はまず、受け付けられるのを待っている保留状態の TCP 接続 (3 段階ハンドシェークが終わっている) の数が、そのリスナーに対する最大数 (N) を超えていないかをチェックします。接続数が超えていると、その要求は拒否されます。超えていなければ、 は、不完全な保留状態の TCP 接続の数が、N と tcp_conn_req_max_q0 の合計を超えていないかをチェックします。そうでなければ、その要求は受け付けられます。それ以外の場合、最も古い不完全な保留状態の TCP 要求がドロップされます。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
受け付けられるのを待っている、単一のリスナーの保留状態の TCP 接続の最大数のデフォルトの最小値。これは、1 つのアプリケーションが使用できる listen(3SOCKET) のもっとも小さい最大値です。
1
1 から 1024
はい
このパラメータにより、listen(3SOCKET) を使用するアプリケーションが保留状態の TCP 接続の最大数を過度に小さく設定するのを防ぐことができます。この値は、着信接続要求の頻度に応じて増やすことができます。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
このパラメータに 1 が設定されている場合、RST セグメントの最大送信速度は、ipmadm パラメータ _rst_sent_rate によって制御されます。このパラメータに 0 が設定されている場合、RST セグメントの送信時に速度を制御することはできません。
1 (有効)
0 (無効)、1 (有効)
はい
このチューニング可能パラメータは、RST セグメントの送信速度を制限することで、TCP に対するサービス拒否攻撃を防止します。この速度制御は、RFC 793 に厳密に準拠する必要がある場合にのみ、無効になります。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
40
0 から 4,294,967,295
はい
TCP 環境では、正当な理由により、デフォルト値より多くの RST が生成される場合があります。このような場合は、このパラメータのデフォルト値を引き上げます。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
このパラメータは、TCP が一時的なポートとして選択できる最小ポート番号を制御します。アプリケーションでは、指定されたプロトコルを使って接続を作成する際に、ポート番号を指定しないで一時的なポートを使用することができます。一時的なポートは、特定のアプリケーションに関連付けられていません。接続が閉じられると、ポート番号を別のアプリケーションで再利用できます。
ポート番号
32,768
1,024 から 65,535
はい
より広範囲の一時的なポートが必要な場合。
変更の可能性あり
詳細は、「[tcp,sctp,udp]_smallest_anon_port と [tcp,sctp,udp]_largest_anon_port (Oracle Solaris 11)」を参照してください。
このパラメータは、TCP が一時的なポートとして選択できる最大ポート番号を制御します。アプリケーションでは、指定されたプロトコルを使って接続を作成する際に、ポート番号を指定しないで一時的なポートを使用することができます。一時的なポートは、特定のアプリケーションに関連付けられていません。接続が閉じられると、ポート番号を別のアプリケーションで再利用できます。
ポート番号
65,535
32,768 から 65,535
はい
より広範囲の一時的なポートが必要な場合。
変更の可能性あり
詳細は、「[tcp,sctp,udp]_smallest_anon_port と [tcp,sctp,udp]_largest_anon_port (Oracle Solaris 11)」を参照してください。
次のパラメータは、/etc/system ファイル内でのみ設定できます。ファイルを変更したあとで、システムをリブートしてください。
たとえば、次のエントリでは ipcl_conn_hash_size パラメータを設定します。
set ip:ipcl_conn_hash_size=value
IP によって使用される接続ハッシュテーブルのサイズを制御します。デフォルト値 0 の場合、システムは、使用可能なメモリー容量に基づいて、ブート時にこのパラメータの適切な値を自動的に決定します。
符号なし整数
0
0 から 82,500
いいえ。このパラメータはブート時にのみ変更できます。
常に非常に大量の TCP 接続が確立されているシステムでは、それに応じてこの値を増やすことができます。ハッシュテーブルサイズを大きくすると、より多くのメモリーが消費され、ユーザーアプリケーション用として提供できるメモリーの量が減ります。
変更の可能性あり
TCP/IP パケットを squeue に格納して処理するワークスレッドが起動するまでの最大遅延時間を制御します。squeue は TCP/IP カーネルコードが TCP/IP パケット処理に使用する直列化キューです。
10 ミリ秒
0 から 50 ミリ秒
はい
遅延が発生しないほうが望ましく、かつ、ネットワークトラフィックが少ない場合。たとえば、対話型ネットワークトラフィックの大部分がマシンで処理されている場合など。
ネットワークファイルサーバー、Web サーバーなど、実際にネットワークトラフィックが発生しているすべてのサーバーでは、通常、デフォルト値が最適です。
このパラメータを設定できるのは、大域ゾーン内だけです。
変更の可能性あり
次のパラメータの変更は非推奨です。
この ipadm パラメータは、システム全体で TCP 接続がアイドル状態になってから最初にプローブが送信されるまでの間隔を設定します。
Solaris は、RFC 1122 に記述されている TCP キープアライブ機構をサポートします。この機構は、TCP ソケットで SO_KEEPALIVE ソケットオプションを設定することで有効になります。
ソケットで SO_KEEPALIVE が有効な場合、TCP 接続が 2 時間 (tcp_keepalive_interval パラメータのデフォルト値) アイドル状態になると最初のキープアライブプローブが送信されます。ピアがプローブに 8 分間応答しない場合、TCP 接続が終了します。詳細は、「_rexmit_interval_initial」を参照してください。
また、個々のアプリケーションに TCP_KEEPALIVE_THRESHOLD ソケットオプションを使用してデフォルトの間隔を置き換えれば、各アプリケーションがソケットごとに独自の間隔を持つようにできます。オプションの値は、ミリ秒単位の符号なし整数です。tcp(7P) のマニュアルページも参照してください。
2 時間
10 秒から 10 日
符号なし整数 (ミリ秒)
はい
この値は変更しないでください。この値を小さくすると、不必要なネットワークトラフィックが生じる可能性があるとともに、ネットワークの一時的な問題のために未完了のまま接続が終了してしまう可能性も高くなります。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
TCP 接続に対するデフォルトの合計再送タイムアウト値をミリ秒で指定します。ある 接続で、TCP が tcp_ip_abort_interval の間再転送を行なっても、この間に相手側のエンドポイントから肯定応答をまったく受け取らないと、この接続は閉じられます。
TCP の再送タイムアウト (RTO) の計算については、RFC 1122 の 4.2.3 を参照してください。「_rexmit_interval_max」も参照してください。
5 分
500 ミリ秒から 1193 時間
はい
この値は変更しないでください。例外については、「_rexmit_interval_max」を参照してください。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
TCP 接続に対するデフォルトの初期再送タイムアウト値をミリ秒で指定します。ルートごとに異なる値を設定する方法については、後述の「ルート別のメトリック」を参照してください。
1000 ミリ秒
1 ミリ秒から 20000 ミリ秒
はい
この値は変更しないでください。この値を小さくすると、不要な再転送が行われるおそれがあります。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
デフォルトの最大再送タイムアウト値 (RTO) をミリ秒で指定します。すべての TCP 接続に対して、計算された RTO がこの値を超えることはできません。「_ip_abort_interval」も参照してください。
6000 ミリ秒
1 ミリ秒から 7200000 ミリ秒
はい
通常のネットワーク環境では、この値を変更しないでください。
単一の接続の往復時間 (RTT) が 10 秒程度になるような特別な状況では、この値を増やすことができます。この値を変更する場合は、合わせて _ip_abort_interval パラメータも変更するべきです。_ip_abort_interval には、_rexmit_interval_max の 4 倍以上の値を指定します。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
デフォルトの最小再送タイムアウト値 (RTO) をミリ秒で指定します。すべての TCP 接続に対して、計算された RTO がこの値を下回ることはできません。「_rexmit_interval_max」も参照してください。
200 ミリ秒
1 ミリ秒から 7200000 ミリ秒
はい
通常のネットワーク環境では、この値を変更しないでください。
TCP の RTO 計算は、RTT のもっとも大きい変動に対処できます。単一の接続の往復時間 (RTT) が 10 秒程度になるような特別な状況では、この値を増やすことができます。この値を変更する場合は、合わせて _rexmit_interval_max パラメータも変更するべきです。_rexmit_interval_max には、_rexmit_interval_min の 8 倍以上の値を指定します。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
0 ミリ秒
0 から 7200000 ミリ秒
はい
この値は変更しないでください。
計算された RTO が接続に対して適切でない場合は、不要な再転送を避けるためにこの値を変更することができます。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
このパラメータに 1 が設定され、かつ、ある接続に対するウィンドウスケールオプションが有効になっていると、TCP は、その接続の timestamp オプションも有効にします。
1 (有効)
0 (無効)、1 (有効)
はい
この値は変更しないでください。一般に、TCP を高速ネットワークで使用する場合は、シーケンス番号のラップアラウンドに対する保護が必要になります。この場合、timestamp オプションが必要になります。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。
デフォルトの最小受信ウィンドウサイズを制御します。最小値は、_recv_hiwat_minmss に、接続の最大セグメントサイズ (MSS) を掛けた値です。
8
1 から 65,536
はい
この値は変更しないでください。この値を変更する必要がある場合は、4 より小さい値にしないでください。
変更の可能性あり
詳細は、「TCP パラメータの名前の変更 (Oracle Solaris 11)」を参照してください。