![]() |
Sun ONE Application Server 7 パフォーマンスチューニングガイド |
オペレーティングシステムのチューニングSolaris の TCP/IP 設定のチューニングは、多数のソケットを開閉するプログラムで役立ちます。Sun ONE Application Server は、少数の固定された接続のセットで動作し、パフォーマンスの向上はアプリケーションサーバーノードでの向上ほど顕著ではありません。Sun ONE Application Server の Web フロントエンドとして設定されている Web サーバーでは、大きな改善を見込めます。ここでは、次の項目について説明します。
チューニングパラメータ
次の表は、パフォーマンスとスケーラビリティのベンチマークに使われる、Solaris オペレーティングシステムのチューニングパラメータを示しています。これらの値は、最適な結果を得られるシステムのチューニング例を示しています。
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=65536vm.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 = 262143net.ipv4.tcp_rmem = 4096 131072 262143
net.ipv4.tcp_wmem = 4096 131072 262143
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0kernel.shmmax = 67108864