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
openfiles と descriptors には、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) の名前です。
ディスクの速度をテストします。
次のコマンドを使用します。
/sbin/hdparm -t /dev/hdX |
ダイレクトメモリーアクセス (DMA) を有効にします。
次のコマンドを使用します。
/sbin/hdparm -d1 /dev/hdX |
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」を参照してください。
/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 |
/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 |
/etc/rc.local の最後のエントリとして次の行を追加します。
sysctl -p /etc/sysctl.conf |
システムを再起動します。
次のコマンドを使用して、送信バッファーのサイズを大きくします。
tcp_recv_hiwat ndd /dev/tcp 8129 32768 |