Я использую кластер 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