мы используем AKKA.Net для связи между несколькими процессами.Приложение иногда врезалось при использовании AKK.Net в качестве канала связи
Используемая нами версия AKKA.Net самая новая: 1.0.7. Существует около 20 процессов, которые используют AKKE.Net. Эти процессы - это службы 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)
Рабочая нагрузка в то время, когда исключение выбрано почти нулевым.
Есть ли советы по устранению этой проблемы? Большое спасибо.
Got it. Спасибо за ваш ответ! Ожидание ваших хороших новостей :) – sevendays
Привет, есть ли какие-либо успехи по этим вопросам? :) – sevendays
Да, но все еще осталось работать. Вы увидите, почему в примечаниях к выпуску. Вы также можете пинговать меня на @aaronontheweb в чате Akka.NET Gitter или в Twitter. – Aaronontheweb