9

SSL を有効にする必要がある Delphi SOAP サービスがあります。構成を容易にするために、IIS ARR リバース プロキシを使用して SSL オフロードを行うことにしました (OpenSSL および手動の証明書 + パスフレーズ管理と比較して)。ARR は機能しますが、非常に多くのオーバーヘッドが追加されます... 18 のサービス要求 (圧縮された合計約 60Kb) に対して応答時間が2 秒未満から 19 秒になりました。

メッセージが送受信されたときのタイムスタンプ ロギングをクライアントとサーバーに追加しました。これは、クライアントからの送信とサービスによる受信の間に、ARR を介してルーティングされる各要求に約 1 秒追加されることを示しています。応答は非常に迅速に返されますが、ARR を介した要求ルーティングのみが遅くなります (下の画像を参照)。

オーバーヘッドの原因を追跡するにはどうすればよいですか? ARR はこのユース ケースに適していませんか? キャッシングを含むほとんどの設定を微調整して無効にしようとしました。運用環境の Windows Server 2012 を含む、クリーンな IIS セットアップでさまざまなホストを試しました。SSL 自体はオーバーヘッドではなく、ARR HTTP リバース プロキシを使用するだけで遅延が発生します。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://localhost:8987/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Fiddler からの要求と応答のサンプル:

クライアントとサーバーのタイムスタンプ グリッド

I0IS トレースは、ARR からのオーバーヘッドを示します

4

4 に答える 4

10

同じ問題があります。ルートを見つけました。System.Net.Sockets.Socket.DoConnect にあります。問題は IPv6 に関連しています。

https://social.msdn.microsoft.com/Forums/vstudio/en-US/203b6230-e4c0-477c-9a0a-0c21a7ad1615/strange-onesecond-delay-with-tcpconnections-to-localhost?forum=clr

http://msdn.microsoft.com/en-us/library/115ytk56.aspx

「IPv6 が有効になっていて、TcpClient(String, Int32) メソッドが呼び出されて、IPv6 アドレスと IPv4 アドレスの両方に解決されるホストに接続する場合、IPv6 アドレスへの接続が最初に試行されてから、IPv4 アドレスが試行されます。これは影響を与える可能性があります。ホストが IPv6 アドレスをリッスンしていない場合に、接続を確立する時間を遅らせることです。」

マシンで IPv6 を無効にする必要があるループバック リクエストで解決するには、p.4-5-6 を参照してください: https://stackoverflow.com/a/12403731

于 2014-12-15T12:32:04.747 に答える
4

私のアドバイス: アプリには IIS を使用し、プロキシには Apache HTTP Daemon を使用してください。

過去に、私はさまざまなソフトウェアとハ​​ードウェアを SSL オフロードに使用してきました (2003 年のどこかで開始したと思います)。それぞれに独自の価格レベルと機能があります。ここ数年、私はその目的のために Apache HTTP Daemon のみを使用するように切り替えてきました。IIS や Windows と組み合わせても。Apache は、実行中のサンプルがあれば簡単に構成でき、転送と名前変更を使用してより複雑なシナリオに簡単に拡張できます。

Windows で Apache HTTP Daemon を SSL オフロード エンジンとして使用する方法については、http://www.invantive.com/about-invantive/news/entryid/897/ssl-offloading-for-apache-tomcatを参照してください。

于 2013-11-18T13:56:31.147 に答える
1

ドミトリーが提案したように、IPv6をオフにすると、これが解決されました。

IPv4 を強制するために、localhost の代わりに書き換えで 127.0.0.1 を使用することもできます。

于 2015-08-23T17:45:45.203 に答える
0

セットアップに何かおかしなところがあると思います。現在、SSL オフロードの ARR を実行し、かなりのボリュームでスループット テストを実施しましたが、ARR はスループットにほとんどまたはまったく影響を与えませんでした。

ブロックに同意し、最初にアプリケーション プールの設定を確認してください。基本的に、ARR アプリ プールはリサイクルしないように設定する必要があります。

エピソード 32 ~ 38 を見ることをお勧めし ます。

于 2014-10-20T19:39:22.603 に答える