netTcpBindingを使用するアプリケーションが突然動作を停止したことに気づきました。サービスをホストしているサーバーのイベントログを調べたところ、次の警告が見つかりました(一連の警告の1つ)。
例外情報:例外タイプ:TimeoutException例外メッセージ:割り当てられたタイムアウト00:01:00内にオープン操作が完了しませんでした。この操作に割り当てられた時間は、より長いタイムアウトの一部であった可能性があります。
サーバースタックトレース:System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan timeout)at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)at System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout、CallOnceManagercascade)at System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan timeout)atSystem。 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall、ProxyOperationRuntime operation)でのServiceModel.Channels.ServiceChannel.Call(String action、Boolean oneway、ProxyOperationRuntime operation、Object [] ins、Object [] outs、TimeSpan timeout)atSystem。 ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessageメッセージ)
この問題を修正するには、maxReceivedMessageSizeのサイズを10増やす必要があったため、新しいバインディングは次のようになります。
> <netTcpBinding>
> <binding name="largeBufferNetTcpBinding" listenBacklog="100" maxBufferSize="519730000" maxConnections="100"
> maxReceivedMessageSize="519730000" portSharingEnabled="true">
> <readerQuotas maxArrayLength="519730000"/>
> <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
> <security>
> <message clientCredentialType="Windows"/>
> </security>
> </binding>
> <binding name="defaultNetTcpBinding" portSharingEnabled="true"/>
> <binding name="defaultNetTcpMexBinding" portSharingEnabled="true">
> <security mode="None"/>
> </binding> </netTcpBinding>
maxReceivedMessageSizeが上記のTimeoutExceptionとどのように関連しているかわかりません。これをさらにトラブルシューティングし、サービスの信頼性を高めるにはどうすればよいですか?