Kodama's home / tips.
注意. 副作用あり. チューニングのトレードオフに注意.
一応動作するようになった後のチューニング. システムの負荷の状態や目的によってどのようにチューニングするかが変わる. トレードオフの考慮が必要な要因もあるので, 状態を調べながら調整する.
数値計算等を目的とするサーバでは, ノンプリエンプティブ カーネルの方が CPUの利用効率が良い.
カーネル空間の処理が重いので, タイマー割り込み, プロセス切替えなどの能力で問題が出る可能性がある. 性能が出ないからと云って 仮想CPU を増やすと, 割り込み処理が増えて, かえって嵌まるかも. 要調整.
ファイルの書き込みが多いサーバでは, ファイル キャッシュの書き込み間隔が長いと, 一度に大量のディスク書き込みが行われるため応答性が間欠的に悪くなる. ファイル キャッシュの書き込み間隔を短くすることで, 負荷は多少高くなるが, 一貫した応答性を持たせることができる.
通常, このオプションが無いと, i-node の整合性を保証するためのメタデータのみのジャーナルとなる.
同時にバッファキャッシュの書き込み間隔を調整すると良い. data=journal とするとジャーナルとファイル本体へのデータの2重書き込みになるので負荷が重くなるが, キャッシュの書き込み間隔を短くすると(サーバの応答性(キャッシュの書き込み間隔)), 他のプロセスに割り込まれる前に同じデータを扱う確率が高くなるので, 負荷の増大の一部を抑制できる可能性がある.
現在の状態を見るには tune2fs -l する.
設定するには tune2fs で dir_index を有効にした後, e2fsck -D する. 解除するには tune2fs で ^dir_index で無効にした後, e2fsck -D する. 当然だが, 作業中は当該のデバイスのマウントを外す. 又は,書き込み禁止でマウント.
# tune2fs -l /dev/sda2 ...略 Filesystem features: has_journal resize_inode filetype needs_recovery sparse_super large_file ...略 # umount /dev/sda2 # tune2fs -O dir_index /dev/sda2 # e2fsck -D /dev/sda2 # mount -a # tune2fs -l /dev/sda2 ...略 Filesystem features: has_journal resize_inode dir_index filetype needs_recovery sparse_super large_file
数値を確認.
# cat /proc/fs/nfsd/threads
nfsd の起動後でも変更できる.
# echo 150 > /proc/fs/nfsd/threads
# cat /proc/sys/fs/file-max次のようにしてファイルデスクリプタの上限を設定する.
# echo "150000" > /proc/sys/fs/file-max又は /etc/sysctl.conf に fs.file-max = 150000 を記述.
# cat /proc/sys/kernel/threads-max次のようにして上限を設定する.
# echo 50000 > /proc/sys/kernel/threads-max又は /etc/sysctl.conf へ kernel.threads-max = 50000.
/etc/ldap/slapd.conf に以下の記述を追加.
threads 400 concurrency 350netstat --tcp で接続の様子を見て調整する. netstat --tcp|wc で接続数を確認.
# slapd.conf (rootdn = o=example,c=JP) index objectClass eq検索キーとして頻繁に使用する属性(ユーザ情報の uid,uidNumber等)と, ほとんど使用しない属性(gecos等)がはっきりしている場合には, 検索キーにインデックスを作成しておくと検索速度が早くなる. indexは, pres:存在, eq:等価性, sub:部分文字列, から指定する. 例えば, mail属性にindexを設定する場合は, index mail pres,eq,sub と指定.
slapd.conf の設定を変更したら, indexの再構築(/usr/local/var/openldap-data/*.bdb)を行い, slapd を再起動する.
# /etc/init.d/slapd slapd stop # /usr/local/sbin/slapindex -v # /etc/init.d/slapd slapd startデバッグ情報を標準エラーに出力するには, 次のようする.
/usr/sbin/slapd -f /etc/ldap/slapd.conf -d 255
# Maximum number of IMAP servers started MAXDAEMONS=200 # Maximum number of connections to accept from the same IP address MAXPERIP=50netstat --tcp で接続の様子を確認する.
同時起動スレッド数を必要な数に設定する. (/etc/postfix/master.cf , /etc/postfix/main.cf, /proc/sys/kernel/threads-max )
受信の遅延(/etc/postfix/main.cf) を適当に入れる. hop 数の遠いところからのアクセスだと, timeout の危険が増えるようだが...
Kodama's home / tips.