1
我們使用AKKA.Net來進行多個進程間的通信。當使用AKK.Net作爲通信通道時,應用程序偶爾會崩潰
我們使用的AKKA.Net版本是最新版本:1.0.7。 使用AKKE.Net大約有20個進程。這些進程是Windows服務。 進程之間的通信工作量不是很大,10個請求/分鐘,並且夜間的工作量爲零。 網絡不是很穩定。 AKKA.Cluster未在系統中使用。
我們爲AppDomain.CurrentDomain.UnhandledException添加一個事件處理程序,以便我們有機會記錄一些重要的異常。代碼如下:
AppDomain.CurrentDomain.UnhandledException += (sender, eventArgs) =>
{
logger.LogFatal("Unhandled exception captured, Terminating:" + eventArgs.IsTerminating);
};
我們保持thoese進程運行數天,發現一些過程(也許2或3)墜毀。我們檢查日誌,看起來似乎是AKKA.Net的一個未知例外。例外的詳細情況列舉如下:
Exception message:Object reference not set to an instance of an object.
Exception stacktrace:
at Helios.Reactor.Tcp.TcpProxyReactor.CloseConnection(Exception ex, IConnection remoteHost)
at Helios.Reactor.Tcp.TcpProxyReactor.ReceiveCallback(IAsyncResult ar)
at System.Net.LazyAsyncResult.Complete(IntPtr userToken)
at System.Net.ContextAwareResult.CompleteCallback(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Net.ContextAwareResult.Complete(IntPtr userToken)
at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken)
at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)
當拋出異常時的工作量幾乎爲零。
有沒有關於如何解決這個問題的任何提示?非常感謝。
明白了。感謝您的回覆! 等待你的好消息:) – sevendays
嗨,這個問題有什麼進展嗎? :) – sevendays
是的 - 但仍有更多的工作要走。您會在發行說明中看到爲什麼。您也可以在@aaronontheweb上通過Akka.NET Gitter聊天或在Twitter上ping我。 – Aaronontheweb