5.13 WAN接続を使用したデータ転送の最適化

WAN接続用のデータ転送のパフォーマンスを最適化し、チューニングを行うことができます。これを実行するには、システムが、PlateSpin Serverホストにある環境設定ツールで行われている設定から読み取る環境設定パラメータを変更します。一般的な手順については、PlateSpin設定を参照してください。

5.13.1 パラメータの微調整

ファイル転送環境設定パラメータの設定を使用すると、WANでのデータ転送を最適化できます。これらの設定はグローバルなので、ファイルベースのレプリケーションおよびVSSレプリケーションのすべてに影響します。

メモ:これらの値が変更されると、Gigabit Ethernetなど高速ネットワーク上でのレプリケーション時間が遅くなるなどマイナスの影響を受ける可能性があります。これらのパラメータを変更する前に、まずPlateSpin Supportに相談することを検討してください。

表 5-4に、PlateSpin環境設定ページ(https://Your_PlateSpin_Server/platespinconfiguration/)の環境設定パラメータを示します。これらの環境設定パラメータでは、デフォルト値と最大値を指定してファイル転送速度を制御することができます。高レイテンシのWAN環境での動作を最適化するために、試行錯誤を繰り返してこれらの値を変更できます。

表 5-4 ファイル転送環境設定パラメータのデフォルト値と最適値

パラメータ

デフォルト値

Maximum Value

AlwaysUseNonVSSFileTransferForWindows2003

False

 

FileTransferCompressionThreadsCount

パケットレベルのデータ圧縮に使用されるスレッド数を制御します。圧縮が無効の場合、この設定は無視されます。圧縮はCPUに依存するため、この設定はパフォーマンスに影響を与える可能性があります。

2

該当なし

FileTransferBufferThresholdPercentage

新しいネットワークパケットを作成して送信するためにバッファする必要があるデータの最小量を決定します。

10

 

FileTransferKeepAliveTimeOutMilliSec

TCPがタイムアウトした場合にキープアライブメッセージを送信するまでに待機する時間を指定します。

120000

 

FileTransferLongerThan24HoursSupport

True

 

FileTransferLowMemoryThresholdInBytes

サーバが自身をメモリ不足であると見なすタイミングを決定します。メモリが不足すると、ネットワーキング動作の増加を引き起こします。

536870912

 

FileTransferMaxBufferSizeForLowMemoryInBytes

メモリ不足状態で使用する内部バッファサイズを指定します。

5242880

 

FileTransferMaxBufferSizeInBytes

パケットデータを保持する内部バッファサイズを指定します。

31457280

 

FileTransferMaxPacketSizeInBytes

送信する最大パケットサイズを決定します。

1048576

 

FileTransferMinCompressionLimit

パケットレベルの圧縮のしきい値をバイトで指定します。

0 (無効)

最大65536 (64KB)

FileTransferPort

3725

 

FileTransferSendReceiveBufferSize

レプリケーションネットワークのTCP接続の送受信バッファの最大サイズ(バイト単位)を定義します。バッファサイズはTCP受信ウィンドウ(RWIN)のサイズに影響します。RWINは、TCP確認応答なしで送信できるバイト数を設定するものです。この設定はファイルベース転送とブロックベース転送の両方に関係があります。ネットワークの帯域幅とレイテンシに応じてバッファサイズを微調整することで、スループットが向上し、CPU処理が軽減されます。

値を0 (オフ)に設定すると、デフォルトのTCPウィンドウサイズ(8KB)が使用されます。カスタムのサイズにするには、サイズをバイトで指定します。

次の式を使用して、適切な値を決定します。

((リンク速度(Mbps) ÷ 8) x 遅延(秒))) x 1000 x 1024

たとえば、10ミリ秒の遅延のある100Mbpsのリンクでは、適切なバッファサイズは次のようになります。

(100/8)*0.01 * 1024 * 1000 = 128000バイト

微調整については、FileTransferSendReceiveBufferSizeの微調整を参照してください。

0 (8192バイト)

最大5242880 (5MB)

FileTransferSendReceiveBufferSizeLinux

Linuxでのファイル転送接続のTCP/IP Receive Window (RWIN)サイズの設定を指定します。このパラメータは、TCP受信確認なしで送信されるバイト数を制御します。

値が0 (オフ)に設定されている場合、LinuxのTCP/IPウィンドウサイズ値はFileTransferSendReceiveBufferSizeの設定に基づいて自動的に計算されます。どちらのパラメータも0 (オフ)に設定されている場合、デフォルト値は248KBです。カスタムのサイズにするには、サイズをバイトで指定します。

メモ:旧リリースのバージョンでは、このパラメータを希望する値の半分に設定する必要がありましたが、現在はその必要はありません。

0 (253952バイト)

 

FileTransferShutDownTimeOutInMinutes

1090

 

FileTransferTCPTimeOutMilliSec

TCP Send TimeoutとTCP Receive Timeoutの両方の値を設定します。

30000

 

PostFileTransferActionsRequiredTimeInMinutes

60

 

5.13.2 FileTransferSendReceiveBufferSizeの微調整

FileTransferSendReceiveBufferSizeパラメータは、レプリケーションネットワークのTCP接続の送受信バッファの最大サイズ(バイト単位)を定義します。バッファサイズはTCP受信ウィンドウ(RWIN)のサイズに影響します。RWINは、TCP確認応答なしで送信できるバイト数を設定するものです。この設定はファイルベース転送とブロックベース転送の両方に関係があります。ネットワークの帯域幅とレイテンシに応じてバッファサイズを微調整することで、スループットが向上し、CPU処理が軽減されます。

FileTransferSendReceiveBufferSizeパラメータを微調整することで、ご使用のレプリケーション環境におけるソースサーバからターゲットサーバへのブロックまたはファイルの転送を最適化できます。PlateSpin環境設定ページ(https://Your_PlateSpin_Server/platespinconfiguration/)でパラメータを設定します。

最適なバッファサイズを計算するには:

  1. ソースサーバとターゲットサーバとの間のレイテンシ(遅延)を判断します。

    ここでの目的は、パケットサイズをできる限りMTUに近付けた場合に、レイテンシがどの程度かを確認することです。

    1. 管理者ユーザとしてソースサーバにログインします。

    2. コマンドプロンプトで次のコマンドを入力します。

      # ping <target-server-ip-address> -f -l <MTU_minus_28> -n 10

      通常、ping-lオプションは、target-server-ip-addressに対して指定したペイロードのヘッダに28バイトを追加します。したがって、MTUから28を引いたバイト数のサイズの値を最初に試してみることをお勧めします。

    3. 次のメッセージが表示されるまで、ペイロードを変更してステップ 1.bのコマンドを再入力する操作を繰り返します。

      パケットの断片化が必要です

    4. レイテンシを秒単位に変換してメモします。

      たとえば、レイテンシが35ms (ミリ秒)の場合、0.035をレイテンシとしてメモします。 

  2. 初期バッファサイズのバイト値を計算します。

    バッファサイズ = (帯域幅(Mbps) ÷ 8) x レイテンシ(秒) x 1000 x 1024

    ネットワーク帯域幅にはバイナリ値を使用します。つまり、10Gbpsの場合は10240Mbps、1Gbpsの場合は1024Mbpsを使用します。

    たとえば、10Gbpsネットワークでレイテンシが35msの場合、次のような計算になります。

    バッファサイズ = (10240 ÷ 8) x 0.035 x 1000 x 1024 = 45875200バイト
  3. (オプション)最適なバッファサイズを計算します。端数は最大セグメントサイズ(MSS)の倍数になるように切り上げます。

    1. MSSを判断します。

      MSS = MTUサイズ(バイト) - (IPヘッダサイズ + TCPヘッダサイズ) 

      IPヘッダサイズは20バイトです。TCPヘッダサイズは、20バイトにタイムスタンプなどのオプションのバイト数を足した値になります。

      たとえば、MTUサイズが1470の場合、MSSは通常1430になります。

      MSS = 1470バイト - (20バイト + 20バイト) = 1430バイト
    2. 最適なバッファサイズを計算します。

      最適なバッファサイズ = (roundup( バッファサイズ ÷ MSS )) x MSS

      上の例で計算すると、次のようになります。

      最適なバッファサイズ = (roundup(45875200 ÷ 1430)) x 1430 
                        = 32081 x 1430 
                        = 45875830

      切り捨てではなく切り上げで計算してください。切り捨てで計算すると、バッファサイズ45875200より小さいMSSの倍数になります。

      最適ではないバッファサイズ = 32080 x 1430 = 45874400