Драйвер Cassandra C# - Windows отладка, через несколько минут я получаю: «Все хосты пытались выполнить запрос, не удалось (попробовал xxxx). 4 узла, отлично работает в прод - PullRequest
2 голосов
/ 04 мая 2020

Я использую кластер dev cassandra (4 узла, каждый из которых имеет 4 ядра, 6 ГБ ОЗУ, 30-40 ГБ хранилища (NVME / SSD) на разных SAN).

Код, используемый для подключения (. net ядро ​​3.1) и является DI через Singleton

  _cluster = Cluster.Builder()
            .AddContactPoints(cassandraHost.ToString().Split(','))

             //  .WithLoadBalancingPolicy(new RoundRobinPolicy())
            .WithPoolingOptions(new PoolingOptions().SetHeartBeatInterval(50000))
            .WithReconnectionPolicy(new ConstantReconnectionPolicy(1000))
            .Build()
            ;
        _sessions = new ConcurrentDictionary<string, ISession>();

и для получения сеанса:

  if (!_sessions.ContainsKey(keyspaceName))
            {
               // var session = _cluster.Connect(keyspaceName);
                _sessions.GetOrAdd(keyspaceName, _cluster.Connect(keyspaceName));
                //var session = ;
            }
                //_sessions.GetOrAdd(keyspaceName, key => new Lazy<ISession>(() =>
                //    _cluster.Connect(key)));

            var result = _sessions[keyspaceName];

            return result;

Ошибка, которую я вижу через 3-30 минут:

Cassandra.NoHostAvailableException: All hosts tried for query failed (tried 10.30.200.4:9042; 10.30.200.2:9042; ...), see Errors property for more info

Интересный поворот, тот же код отлично работает в продакшене, но не может заставить его работать при разработке.

Что касается нагрузки, чтение происходит каждые 0,2 с (~ 1500 записей) и около ~ 1000 вставок в секунду (dev).

Не могу понять, почему на моей машине dev происходит сбой кода после случайных X минут.

Узлы доступны во время приложения cra sh работают нормально (как только я перезапущу приложение, оно снова начнет работать нормально).

Я пытаюсь взломать это сейчас, может быть, в течение недели, но до сих пор не могу этого понять: /

Заранее спасибо за любое направление.

Вот журнал (Serilog => Sentry).

assandra.NoHostAvailableException: All hosts tried for query failed (tried 
10.30.200.1:9042: OperationTimedOutException 'The host 10.30.200.1:9042 did 
not reply before timeout 12000ms')
Module "Cassandra.Requests.RequestHandler", in GetNextValidHost
Module "Cassandra.Requests.RequestExecution", in Start
Module "Cassandra.Requests.RequestExecution", in RetryExecution
Module "System.Runtime.ExceptionServices.ExceptionDispatchInfo", in Throw
Module "System.Runtime.CompilerServices.TaskAwaiter", in 
HandleNonSuccessAndDebuggerNotification
 Module "System.Runtime.CompilerServices.TaskAwaiter`1", in GetResult
...