我们正在使用AKKA.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)
抛出异常时的工作量几乎为零。
有关于如何解决此问题的提示吗?非常感谢。
答案 0 :(得分:1)
这是known bug in Helios that I logged recently - 正在努力尽快修复它。
我会在修复完成后回复此处并发表评论,但这是我本周正在进行的工作。