ネットワークパラメータを設定するには、nddコマンドを使用します。構文の詳細はマニュアルを参照して下さい。
全パラメータ表示
# ndd -get driver名 \?
パラメータ設定値表示
# ndd -get driver名 parameter
パラメータ設定
# ndd -set driver名 parameter value
で、driver名にはこんなのがあります。
driver名 | 説明 |
---|---|
/dev/インターフェース名 | インターフェースに関する。例えば、/dev/hmeとか/dev/eriとかになります。 |
/dev/tcp | TCPに関する |
/dev/udp | UDPに関する |
/dev/icmp | ICMPに関する |
/dev/ip | IPに関する |
/dev/arp | ARPに関する |
恒久的に設定をするには、カーネルパラメータ設定ファイル/etc/systemに記述するか、起動スクリプトを作成して、その中でnddコマンドを実行するようにしてやります。そうすれば、起動時にパラメータが設定されますので。設定できるパラメータは、実にたくさんあります。詳細はBash Homepageとか、 Tuning Your TCP/IP Stack and Moreとか、Solaris Network Kernel Tunning for Security 辺りを見て下さい。いずれもすばらしいです。きっと役に立ちます。ここでは、僕の知っていることだけを書きたいと思います(わずかですが・・・)。
通信速度を見る。0:10Mbps、1:100Mbpsです。
# ndd -get /dev/hme link_speed
通信モードを見る。0:Half duplex、1:Full duplexです。
# ndd -get /dev/hme link_mode
AutoNegotiation機能が有効かみる。0:AutoNegotiation無効、1:AutoNegotiation有効です。
# ndd -get /dev/hme adv_autoneg_cap
通信モードを全二重に設定してみる。/etc/systemでやる場合。
# vi /etc/system --- set hme:hme_adv_autoneg_cap=0 set hme:hme_adv_100hdx_cap=0 set hme:hme_adv_100fdx_cap=1 # /etc/telinit 6
nddコマンドでやる場合。
# ndd -set /dev/hme adv_autoneg_cap 0 # ndd -set /dev/hme adv_100hdx_cap 0 # ndd -set /dev/hme adv_100fdx_cap 1
理解度はいまいちですが、ここのコラムを参照下さい。ヒントにはなるはずだと思いますが・・・
サーバリソースに余裕があるなら、TCPコネクション数やバッファサイズ等を大きめにチューニングすれば、より効果を発揮するかも知れません。 当然ですが、あまり大きな数値にすると、メモリリソースの枯渇からサーバへの負荷が高くなってしまうので、注意が必要です。この辺のさじ加減が難しいのですが。
接続が完了しているTCP接続の最大数(ESTABLISHEDな接続の最大数)を大きめに設定する。効果はより多くのアクセスを受け付ける事ができます。
# ndd -set /dev/tcp tcp_conn_req_max_q 1024
全てのTCP接続の最大数を大きめに設定。
# ndd -set /dev/tcp tcp_conn_req_max_q0 2048
TIME_WAIT状態の待ち時間を短めにして、メモリ解放を早くしてあげる設定。効果はより多くのアクセスを受け付ける事ができます。
# ndd -set /dev/tcp tcp_time_wait_interval 15000 # ndd -set /dev/tcp tcp_fin_wait_2_flush_interval 67500
コネクション確立時のタイムアウト時間。短めに設定しておけば、半オープンなコネクション状態の時間が短くなるので、SYN flood攻撃に有効かも知れない。
# ndd -set /dev/tcp tcp_ip_abort_interval 600000
送信ウインドサイズの変更。
# ndd -set /dev/tcp tcp_xmit_hiwat 65535
受信ウインドサイズの変更。
# ndd -set /dev/tcp tcp_recv_hiwat 65535
これくらいしか僕の理解度は有りません。もっと詳しく知りたい方は、以下のサイトを参照下さい。
Tips & Technique for Solaris
Bash Homepage
Solarisカーネルのチューンアップ・リファレンスマニュアル
パフォーマンスチューニングに関する記事
TCP解説
余裕があるなら、TCPと同様にバッファサイズを大きめに設定。
# ndd -set /dev/udp udp_xmit_hiwat 65535 # ndd -set /dev/udp udp_recv_hiwat 65535