2016-04-21 86 views
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) 

當拋出異常時的工作量幾乎爲零。

有沒有關於如何解決這個問題的任何提示?非常感謝。

回答

1

這是一個known bug in Helios that I logged recently - 致力於儘快解決問題。

一旦修復失敗,我會在這裏回覆一條評論,但這是我目前在本週工作的內容。

+0

明白了。感謝您的回覆! 等待你的好消息:) – sevendays

+0

嗨,這個問題有什麼進展嗎? :) – sevendays

+0

是的 - 但仍有更多的工作要走。您會在發行說明中看到爲什麼。您也可以在@aaronontheweb上通過Akka.NET Gitter聊天或在Twitter上ping我。 – Aaronontheweb

相關問題