Sun Java System Application Server Enterprise Edition 8.2 パフォーマンスチューニングガイド

Linux プラットフォームのチューニング

Linux で最大のパフォーマンスが得られるように調整するには、次の調整を行う必要があります。

ファイル記述子

ファイル記述子の数をデフォルト値よりも増やす必要がある場合があります。ファイル記述子の数を増やすと、サーバーが高負荷時でもソケットを開くことができるようになり、クライアントから受け取る要求の処理が中止されなくなります。

まず、次のコマンドを使用して、ファイル記述子のシステム制限を確認します。

cat /proc/sys/fs/file-max
8192

現在の制限は 8192 と示されています。これを 65535 に増やすには、次のコマンドを root として実行します。

echo "65535" > /proc/sys/fs/file-max

システムを再起動してもこの値を維持するには、これを /etc/sysctl.conf に追加し、許可されるオープンファイルの最大数を指定します。

fs.file-max = 65535

注意: このパラメータは proc.sys.fs.file-max ではありませんので、間違えないようにしてください。

sysctl を使用して変更できる使用可能パラメータを一覧表示するには、次のコマンドを使用します。

sysctl -a

sysctl.conf ファイルから新しい値を読み込むには、次のコマンドを使用します。

sysctl -p /etc/sysctl.conf

シェルあたりの制限値を確認および変更するには、次のコマンドを使用します。

limit

次のように出力されます。

cputime         unlimited
filesize        unlimited
datasize        unlimited
stacksize       8192 kbytes
coredumpsize    0 kbytes
memoryuse       unlimited
descriptors     1024
memorylocked    unlimited
maxproc         8146
openfiles       1024

openfilesdescriptors には、1024 の制限値が示されています。全ユーザーを対象にこの制限値を 65535 に増やすには、root として/etc/security/limits.conf を編集し、nofile 設定 (ファイル数) エントリを変更または追加します。

*         soft    nofile                     65535
*         hard    nofile                     65535

*」の文字は、すべてのユーザーを示すワイルドカードです。代わりに特定のユーザー ID を指定することもできます。

次に、/etc/pam.d/login を編集し、次の行を追加します。

session required /lib/security/pam_limits.so

Red Hat ではさらに、/etc/pam.d/sshd を編集し、次の行を追加する必要があります。

session required /lib/security/pam_limits.so

多くのシステムでは、ここまでの手順で十分です。残りの手順を実行する前に、通常のユーザーとしてログインし、結果を試してください。プラグイン可能認証モジュール (PAM) およびセキュアシェル (SSH) の設定方法によっては、残りの手順は不要な場合があります。

仮想メモリー

仮想メモリーの設定を変更するには、/etc/rc.local に次のエントリを追加します。

echo 100 1200 128 512 15 5000 500 1884 2 > /proc/sys/vm/bdflush

詳細については、bdflush のマニュアルページを参照してください。

HADB の設定については、第 6 章「高可用性のチューニング」を参照してください。

ネットワークインタフェース

ネットワークインタフェースを確実に全二重モードで動作させるには、/etc/rc.local に次のエントリを追加します。

mii-tool -F 100baseTx-FD eth0

eth0 は、ネットワークインタフェースカード (NIC) の名前です。

ディスク入出力の設定

ProcedureSCSI 以外のディスクのディスク入出力パフォーマンスを調整する

  1. ディスクの速度をテストします。

    次のコマンドを使用します。


    /sbin/hdparm -t /dev/hdX
  2. ダイレクトメモリーアクセス (DMA) を有効にします。

    次のコマンドを使用します。


    /sbin/hdparm -d1 /dev/hdX
  3. hdparm コマンドを使用して速度をもう一度確認します。

    DMA がデフォルトで有効にされていなければ、転送速度が大幅に向上している可能性があります。再起動するたびにこの設定が行われるようにするには、/etc/conf.d/local.start/etc/init.d/rc.local など、起動スクリプトを呼び出すすべてのファイルに、/sbin/hdparm -d1 /dev/hdX という行を追加します。

    SCSI ディスクについては、『System Tuning Info for Linux Servers』の「SCSI Tuning」を参照してください。

TCP/IP 設定

ProcedureTCP/IP 設定を調整する

  1. /etc/rc.local に次のエントリを追加します。


    echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
    echo 60000 > /proc/sys/net/ipv4/tcp_keepalive_time
    echo 15000 > /proc/sys/net/ipv4/tcp_keepalive_intvl
    echo 0 > /proc/sys/net/ipv4/tcp_window_scaling
  2. /etc/sysctl.conf に次のエントリを追加します。


    # Disables packet forwarding
    net.ipv4.ip_forward = 0
    # Enables source route verification
    net.ipv4.conf.default.rp_filter = 1
    # Disables the magic-sysrq key
    kernel.sysrq = 0
    net.ipv4.ip_local_port_range = 1204 65000
    net.core.rmem_max = 262140
    net.core.rmem_default = 262140
    net.ipv4.tcp_rmem = 4096 131072 262140
    net.ipv4.tcp_wmem = 4096 131072 262140
    net.ipv4.tcp_sack = 0
    net.ipv4.tcp_timestamps = 0
    net.ipv4.tcp_window_scaling = 0
    net.ipv4.tcp_keepalive_time = 60000
    net.ipv4.tcp_keepalive_intvl = 15000
    net.ipv4.tcp_fin_timeout = 30
  3. /etc/rc.local の最後のエントリとして次の行を追加します。


    sysctl -p /etc/sysctl.conf
  4. システムを再起動します。

  5. 次のコマンドを使用して、送信バッファーのサイズを大きくします。


    tcp_recv_hiwat ndd /dev/tcp 8129 32768