2017-01-05 18 views
1

イメージをクライアントにストリームする単純なWCFサービスがあります。クライアントでは、最初の画像要求は約5.5秒かかり、その後の要求は約40msかかります。これは素晴らしい方法です。WCFリクエスト遅延が50秒ごとに発生する

しかし、約45秒ごとに、要求が行われたかどうかにかかわらず、次の要求は常に約4.6秒かかります。この45秒のサイクルは連続的に繰り返されます。

私はストリーミング転送モードでnet.tcpバインディングを使用しています。私はまた、信頼できるセッションを有効/無効にした状態でバッファリングされた転送モードを試しましたが、このすべてが各要求にかかる時間が増えました。

変更なしでバインディングタイムアウト(オープン、クローズ、送信、受信、非アクティブ)のそれぞれを増やしてみました。

サーバ設定:

serviceHost = new ServiceHost(typeof(TServiceImplementation), serviceUri); 
serviceHost.Description.Behaviors.Add(new ServiceMetadataBehavior() { HttpGetEnabled = false }); 

var netTCPBinding = new NetTcpBinding(SecurityMode.Transport); 
netTCPBinding.TransferMode = TransferMode.StreamedResponse; 
netTCPBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows; 

serviceHost.AddServiceEndpoint(typeof(TServiceContract), netTCPBinding, ServiceName); 
serviceHost.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding(), "mex"); 

クライアントの設定:

<system.serviceModel> 
<bindings> 
    <netTcpBinding> 
    <binding name="TcpBinding" transferMode="StreamedResponse" maxReceivedMessageSize="2147483647" /> 
    </netTcpBinding> 
</bindings> 
<client> 
    <endpoint address="net.tcp://hostname:9000/StreamService" 
    binding="netTcpBinding" bindingConfiguration="TcpBinding" contract="StreamService.IStream" 
    name="NetTcpBinding_IStream" /> 
</client> 
</system.serviceModel> 

UPDATE:これはマシン固有の問題かもしれないように見えます - 私は私のローカルマシン上のサービスを実行したときに、私は経験していませんこの問題。

+0

タイムアウト時間を変更すると、エラーを宣言する前にシステムが応答を待つ時間に影響します。応答速度には影響しません。アプリケーションプールがリサイクルされているように聞こえるため、サービスが削除され、再作成されます数秒間の稼働時間を設定する必要があるため、IIS設定を調べる – MikeT

+0

これはWindowsサービスとして実行されているため、おそらくこれは問題ではありません。 – irv075

答えて

0

これはアドレス解決の問題だと私は判断しました。実際のイメージはサービスを実行しているマシンとは別のマシンでホストされていたので、設定を変更してIPアドレスを使用しました。ホストではなく、問題が解決されました。

名前キャッシュタイムアウトとは関係がありますが、どちらがまだあるのかはまだわかりません。

関連する問題