よくある質問| エリアビイジャパン株式会社 / /

よくある質問

610111 サーバチューンアップのヒントはありませんか

SSL-VPNであるSWANStorの基本はWebアクセス(HTTP)ですが、このためご利用のシステムのTCPの設定によって見かけ上の応答速度などが変化することがあります。

ここでは弊社運用のサーバで設定している値などを参考値として提示させていただきます。


注:Windowsではレジストリを編集します。誤った設定を行うとシステムが不安定になったり起動しなくなったりします。設定については自己責任でお願いします。


1)TCPのKeepaliveタイマーの設定

TCP はその通信が終了(TCP FIN を送った、または受け取った)場合でも設定された待ち時間だけそのリソースを保持し続けます。

これはアプリケーションが TCP の受信バッファからデータを受け取り切るまでの調整時間なのですが、OSをデフォルトでインストールした状態の設定値は必要以上に長く(デフォルトで7200 秒)、SWANStor サーバのように複数のセッションを処理するサーバシステムでは、TCP リソースが消費し続け不足する場合が あります。


また、Webアプリによってはブラウザ側でデータを受信しきっても、しばらく待ってタイムアウトするかTCPが切断されてから受信したデータを表示する場合があり、TCPセッションが何回も分断されているSWANStorシステムのような場合では、見かけ上応答が遅く見えることがあります。

このような状況に対して、必要のなくなったTCPセッション(CLOSE_WAITの状態にあるものなど)をできるだけ速やかに解放することで改善できる場合があります。


設定方法:

Windowsの場合

レジストリエディタを起動し、次のレジストリキーを新規作成するか、既存のキー値を変更します。変更後はWindowsシステムを再起動します。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parametersに


名前 タイプ
KeepAliveTime REG_DWORD 3000(0xbb8)
KeepAliveInterval REG_DWORD 10000(0x2710)
TCPTimedWaitDelay REG_DWORD 30(0x1e)


Linuxの場合

sysctlコマンドで次の値を設定します。

net.ipv4.tcp_keepalive_time = 10

net.ipv4.tcp_keepalive_probes = 2

net.ipv4.tcp_keepalive_intvl = 3


2)TCPセグメンテーションオフロードの無効化

Linux を仮想マシン環境下で動作させる場合には、インタフェース自身が実ハードウエアではないため、TCP セグメンテーションオフロードが有効だと通信パフォーマンスに影響を及ぼす場合があります。

TCP セグメンテーションオフロードとは、分割されて送られてくるTCP パケットの組み立てや順序制御をハードウエアで実行する仕組みです。

以下のコマンドで TCP セグメンテーションオフロードを無効化するとともに、/etc/rc.d/rc.local にも追記して、システム再起動時自動的に反映されるようにします。


#/sbin/ethtool -K eth0 rx off tx off tso of

Windowsでも同様の問題が報告されています。Windows の場合のTCPセグメンテーションオフロードの無効化の手順は次の通りです。

「ネットワークと共有センター」などからアダプタのプロパティ画面を開きます。


「構成(C)…」ボタンをクリックし、インタフェースのプロパティを開きます。


タブから「詳細設定」を選択します。


プロパティの中から「Large Send Offload(IPv4)」(「Large Send Offload(IPv6)」の項目もある場合があります)を選択し、値をDisabledに変更し、OKボタンをクリックします。


追記:

リモートデスクトップなどのアクセスが継続する場合、TCP通信の上では新しいTCPセッションが張られたり切れたりが継続的に発生するのですが、その場合に使われなくなったセッションがそのまましばらく残り、そのことが原因で新しいセッションの生成に遅延が発生したり、接続ができなかったりといった問題が発生することがわかりました。

これについて、SWANStorゲートウエイをご利用の場合、あるいはSWANStorサーバをLinuxでご利用の場合に、以下のパラメータを追加することで改善することがわかっています。


※ net.ipv4.tcp_tw_recycle = 1 の設定につきまして、iOSクライアントからの接続が遅くなる、エラーになってしまうなど、不安定になる現象が報告されました。この現象に当てはまる場合は net.ipv4.tcp_tw_recycle = 0 としてください。


1)/etc/sysctl.dのswantcp.confを開きます。ファイルがない場合にはこれを作成します。

2)上記のswantcp.confに以下の設定を追記します。

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_fin_timeout = 30

3)sysctl -p /etc/sysctl.d/swantcp.conf コマンドで上記パラメータを適用します。

Windowsについての同様のことが言えると考えられますが、こちらについての設定は現在確認中です





Updated on 12月 3, 2023