최근에 우리 프로덕션 환경에서 WCF 웹 서비스가 중단되는 문제가있었습니다. 우리는 충돌시 메모리 덤프를했고, 우리가 WCF 웹 서비스 충돌 ... 메모리 덤프에서 원인을 알아야합니다.
*
을 windbg를 사용하여 디버깅 할 때 우리는 다음과 같은 스택 추적을받을 * 예외 개체 : System.ObjectDisposedException 메시지 : 유형 000000000a1e5db8 예외가 배치 개체에 액세스 할 수 없습니다. 의 InnerException :enter code here
* * 스택 트레이스 (생성) :!!! System_ServiceModel_ni System.ServiceModel.Channels.CommunicationObject.ThrowIfClosed() + 0xfb2737 System_ServiceModel_ni System.ServiceModel.Channels.ServiceChannel.CleanupChannelCollections() + 0x37 System_ServiceModel_ni는 system.serviceModel .Channels.ServiceChannel.OnAbort() + 0x78을 System_ServiceModel_ni! System.ServiceModel.Channels.CommunicationObject.Abort() + 0x28e System_ServiceModel_ni! System.ServiceModel.Channels.ServiceChannel + SessionIdleManager.TimerCallback() + 0x6c System_Runtime_DurableInstancing_ni! System.Runtime .IOThreadScheduler + ScheduledOverlapped.IOCallback (UInt32, UInt32, System.Threading.NativeOverlapped *) + 0x71,451,515,System_Runtime_DurableInstancing_ni! System.Runtime.Fx + IOCompletionThunk.UnhandledExceptionFrame (UINT32, UINT32, System.Threading.NativeOverlapped *) + 0xdbc70 mscorlib_ni! System.Threading._IOCompletionCallback.PerformIOCompletionCallback (UINT32, UINT32, System.Threading.NativeOverlapped *) + 0x96을 * * StackTraceString : HRESULT : 80131622 StackTraceString : HRESULT : 80131622 **
누군가가이 발생할 수있는 경우에이 예외에 더 많은 통찰력을 줄 수 없습니다.
WCF webservice는 .NET Framework 4.0을 사용하는 Windows 2008 서버에서 실행되고있었습니다.
기타 자세한 사항 :
ConcurrencyMode = Multiple
InstanceContextMode = PerSession
우리의 웹 서비스가 다른 여러 WCF 서비스를 호출합니다. 이들에 대한 바인딩 정보 인 &은 다음과 같습니다. 서비스 코드가 어떻게 든 배치 WCF ServiceChannel
인스턴스가 다시 액세스되고있는 조건을 만들기 때문에
<behavior name="NAME">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceThrottling maxConcurrentSessions="1000" maxConcurrentCalls="1000" maxConcurrentInstances="10`enter code here`00"/>
<dataContractSerializer maxItemsInObjectGraph="655360"/>
</behavior>
<binding name="NAME" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="50" maxBufferPoolSize="524288" maxBufferSize="10485760" maxConnections="150" maxReceivedMessageSize="10485760">
<readerQuotas maxDepth="32" maxStringContentLength="10485760" maxArrayLength="10485760" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
<security mode="None">
<transport clientCredentialType="Windows" protectionLevel="None" />
</security>
</binding>
이것은 완료되지 않은 것 같습니다 ... – ryadavilli
빠른 답장을 보내 주셔서 감사합니다 ... ryadavilli ... 스택 추적이 불완전합니까? 또는 내가 제공 한 정보가 불완전한가? – Arvindh