これはネットワークも同様に考えることができる。ということで、OSのネットワークとディスクのタイムアウト値を調べてみた。
ネットワーク(TCP)のタイムアウト値
Windowsの場合
再送回数に関しては、デフォルト5回との情報がMicorosoftのKBにあるが、5回ではなく3回との情報も多く存在し正しい情報がよくわからない状況。そこで、実際にWiresharkでパケットキャプチャしつつ、Telnetクライアント使ってSYNパケットの再送回数とタイムアウト時間(接続を諦める時間)を確認してみた。タイムアウト時間の初期値は3秒、再送回数は2回のようだ。
つまりWindowsの場合、タイムアウトしてしまう最大の時間は、
0秒(最初のSYN)
+ 3秒(1回)
+ 6秒(2回)
+ 12秒(タイムアウト)
= 21秒
となる。
Linuxの場合
仕組みはWindowsと同じで初期値3秒でリトライ毎に時間が倍々になっていく。リトライ回数は以下で設定されている。/proc/sys/net/ipv4/tcp_syn_retries
このファイルをcatで見ると、デフォルトでは"5"になっているようだ。
つまりLinuxの場合、タイムアウトしてしまう最大の時間は、
0秒(最初のSYN)
+ 3秒(1回)
+ 6秒(2回)
+ 12秒(3回)
+ 24秒(4回)
+ 48秒(5回)
+ 96秒(タイムアウト)
= 189秒
となる。
ディスクのタイムアウト値
Windowsの場合
以下レジストリキーで設定されている。HKEY_LOCAL_MACHINE¥System¥ CurrentControlSet¥Services¥Disk¥TimeOutValue
デフォルト:60秒 (Windows Server 2008 R2、Windows7、Windows 8.1環境で確認)
※レジストリキーの場所だが、"Disk"が"disk"の場合も有り
Linuxの場合
若干乱暴だが以下コマンドで調べることができるようだ。# cat /sys/block/sd*/device/timeout
180
ディスクタイムアウトは180秒であることがわかる。これは後述するが、仮想マシンのVMware Toolsをインストールした際に変更されている。バージョン毎にデフォルト値は違うようだが、手元にあったCentOS 5.9 64bit (kernel:2.6.18-348)で確認した場合は、60秒であった。
仮想環境の場合
仮想環境では、1つのストレージに対し複数の仮想マシンのI/Oが発生するという特異な環境であることから、ストレージのパフォーマンスが安定しないことがある。そのため、VMware Toolsをインストールする際に、タイムアウト値が高めになるよう設定変更されるようだ。Windows:60秒 (デフォルトと変化無し)
Linux:180秒
参考URL
TCP/IP の再送タイムアウトの最大値を変更する方法https://support.microsoft.com/en-us/kb/170359/ja
ディスクが SAN データストアに配置されていると、Windows 仮想マシンのパフォーマンスが不安定になる (2080692)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2080692
Linux 2.6 仮想マシンのディスク タイムアウト値を増やす (2076978)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2076978
0 件のコメント:
コメントを投稿