Sun ONE ロゴ     前へ      目次      索引      次へ     
Sun ONE Application Server 7 パフォーマンスチューニングガイド



オペレーティングシステムのチューニング

Solaris の TCP/IP 設定のチューニングは、多数のソケットを開閉するプログラムで役立ちます。Sun ONE Application Server は、少数の固定された接続のセットで動作し、パフォーマンスの向上はアプリケーションサーバーノードでの向上ほど顕著ではありません。Sun ONE Application Server の Web フロントエンドとして設定されている Web サーバーでは、大きな改善を見込めます。ここでは、次の項目について説明します。

チューニングパラメータ

次の表は、パフォーマンスとスケーラビリティのベンチマークに使われる、Solaris オペレーティングシステムのチューニングパラメータを示しています。これらの値は、最適な結果を得られるシステムのチューニング例を示しています。

表:    Soraris オペレーティングシステムのチューニング 

パラメータ

 

適用範囲

 

デフォルト値

 

調整値

 

コメント

 

rlim_fd_max

 

/etc/system

 

1024

 

8192

 

オープンなファイル記述子の限界を処理する。予想される負荷 (該当する場合は関連づけられたソケット、ファイル、パイプ) を考慮する必要がある

 

rlim_fd_cur

 

/etc/system

 

1024

 

8192

 

 

sq_max_size

 

/etc/system

 

2

 

0

 

ストリームドライバのキューサイズを制御する。0 に設定すると無限になり、パフォーマンスはバッファの容量不足による影響を受けなくなる。クライアントにも設定される

 

tcp_close_wait_interval

 

ndd /dev/tcp

 

240000

 

60000

 

クライアントにも設定される

 

tcp_time_wait_interval

 

ndd /dev/tcp

 

240000

 

60000

 

 

tcp_conn_req_max_q

 

ndd /dev/tcp

 

128

 

1024

 

 

tcp_conn_req_max_q0

 

ndd /dev/tcp

 

1024

 

4096

 

 

tcp_ip_abort_interval

 

ndd /dev/tcp

 

480000

 

60000

 

 

tcp_keepalive_interval

 

ndd /dev/tcp

 

7200000

 

900000

 

トラフィックの多い Web サイトでは、これより小さな値を設定する

 

tcp_rexmit_interval_initial

 

ndd /dev/tcp

 

3000

 

3000

 

再転送率が 30 〜 40% を超える場合は、この値を大きくする

 

tcp_rexmit_interval_max

 

ndd /dev/tcp

 

240000

 

10000

 

 

tcp_rexmit_interval_min

 

ndd /dev/tcp

 

200

 

3000

 

 

tcp_smallest_anon_port

 

ndd /dev/tcp

 

32768

 

1024

 

クライアントにも設定される

 

tcp_slow_start_initial

 

ndd /dev/tcp

 

1

 

2

 

少量のデータを少し高速で転送する

 

tcp_xmit_hiwat

 

ndd /dev/tcp

 

8129

 

32768

 

送信バッファを大きくする

 

tcp_recv_hiwat

 

ndd /dev/tcp

 

8129

 

32768

 

送信バッファを大きくする

 

tcp_conn_hash_size

 

ndd /dev/tcp

 

512

 

8192

 

接続ハッシュテーブルは、アクティブな TCP 接続に関するすべての情報を保持する (ndd -get /dev/tcp tcp_conn_hash)。この値は接続数を制限するものではないが、接続のハッシュにかかる時間が長くなることがある。ルックアップを効率化するには、サーバーで予想される並行 TCP 接続数の半分の値を設定する (netstat -nP tcp|wc -l で求めることができる)。デフォルトは 512。これは /etc/system だけに設定され、起動時に適用される

 

Solaris ファイル記述子の設定

Solaris では、ulimit プロパティによるオープンファイルの最大数の設定は、サポートできる RMI/IIOP クライアントの最大数に大きく影響します。

ハードリミットを引き上げるには、/etc/system に次のコマンドを追加して 1 回再起動します。

set rlim_fd_max = 8192

このハードリミットの設定は、次のコマンドを使って確認できます。

ulimit -a -H

ハードリミットを設定すると、次のコマンドを使ってこの値を明示的に増やすことができます (設定した限界まで)。

ulimit -n 8192

この制限の設定は、次のコマンドを使って確認できます。

ulimit -a

たとえば、ulimit のデフォルト値である 64 では、簡単なテストドライバがサポートする並行クライアントの数は 25 に過ぎませんが、ulimit を 8192 に設定すると、同じテストドライバを使って 120 までの並行クライアントをサポートできます。このテストドライバは複数のスレッドを生成し、各スレッドが JNDI ルックアップと同じビジネスメソッドの呼び出しを行います。ビジネスメソッドの呼び出し間隔 (遅延) は 500 ミリ秒で、約 100 キロバイトのデータがやりとりされます。

これらの設定は、Solaris 上の RMI/IIOP クライアントに適用されます。ファイル記述子の限界設定については、Sun Microsystems のマニュアル Web サイト (www.docs.sun.com) にある Solaris のマニュアルを参照してください。

Linux の設定

システムの起動時に実行される次のパラメータを /etc/rc.d/rc.local ファイルに追加する必要があります。

<-- begin

# 最大ファイル数の上限は 4 メガバイトごとに最大で 256 記述子が追加されます。シ ステムの RAM の容量に応じてファイル記述子の数を指定します。
echo "65536" >

# i ノードの上限は、ファイル数の上限の 3 〜 4 倍です。
# ファイルがありません。
#echo "262144" > /proc/sys/fs/inode-max

# 利用できるローカルポートを増やします。
echo 1024 25000 > /proc/sys/net/ipv4/ip_local_port_range

# ソケットバッファで利用できるメモリを増やします。
echo 2621143 > /proc/sys/net/core/rmem_max
echo 262143 > /proc/sys/net/core/rmem_default

# 2.4.X のカーネルでは次のように設定
echo 4096 131072 262143 > /proc/sys/net/ipv4/tcp_rmem
echo 4096 13107262143 > /proc/sys/net/ipv4/tcp_wmem

# RFC2018 "TCP 選択確認応答""RFC1323 TCP タイムスタンプ" を無効化しま す。
echo 0 > /proc/sys/net/ipv4/tcp_sack
echo 0 > /proc/sys/net/ipv4/tcp_timestamps

# 実行時に shm に割り当てられるメモリの最大量を 2 倍にします。
echo "67108864" > /proc/sys/kernel/shmmax

# Linux の仮想メモリ VM サブシステムを改善します。
echo "100 1200 128 512 15 5000 500 1884 2"> /proc/sys/vm/bdflush

# sysctl も実行します。
sysctl -p /etc/sysctl.conf

-- end -->

更に、/etc/sysctl.conf ファイルを作成し、次の値を追加します。

<-- begin
# パケット転送を無効化します。
net.ipv4.ip_forward = 0
# ソースルートの検証を有効化します。
net.ipv4.conf.default.rp_filter = 1
# Magic Sysrq Key を無効化します。
kernel.sysrq = 0
fs.file-max=65536

vm.bdflush = 100 1200 128 512 15 5000 500 1884 2

net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_max= 262143
net.core.rmem_default = 262143

net.ipv4.tcp_rmem = 4096 131072 262143
net.ipv4.tcp_wmem = 4096 131072 262143
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0

kernel.shmmax = 67108864


前へ      目次      索引      次へ     
Copyright 2002 Sun Microsystems, Inc. All rights reserved.