Я использую ioredis с приложением узла, и из-за некоторых проблем в кластере я начал получать:
Слишком много перенаправлений кластера. Последняя ошибка: ошибка: соединение закрыто.
Из-за этого все мои вызовы redis не были выполнены и через очень долгое время, от 1 секунды до 130 секунд.
Есть ли время ожидания по умолчанию для библиотеки ioredis, которую она использует для подтверждения вызова после отправки команды на выполнение на сервер redis?
Более высокое время сбоя в диапазоне 100 с при отправке команд на сервер Redis, это связано с тем, что большой размер очереди при Redis из-за сбоя кластера?
Пример кода:
this.getData = function(bucketName, userKey) {
let cacheKey = cacheHelper.formCacheKey(userKey, bucketName);
let serviceType = cacheHelper.getServiceType(bucketName, cacheConfig.service_config);
let log_info = _.get(cacheConfig.service_config, 'logging_options.cache_info_level', true);
let startTime = moment();
let dataLength = null;
return Promise.try(function(){
validations([cacheKey], ['cache_key'], bucketName, serviceType, that.currentService);
return cacheStore.get(serviceType, cacheKey);
})
.then(function(data) {
dataLength = (data || '').length;
return cacheHelper.uncompress(data);
})
.then(function(uncompressedData) {
let endTime = moment();
let responseTime = endTime.diff(startTime, 'miliseconds');
if(!uncompressedData) {
if(log_info) logger.consoleLog(bucketName, 'getData', 'miss', cacheKey, that.currentService,
responseTime, dataLength);
} else {
if(log_info) logger.consoleLog(bucketName, 'getData', 'success', cacheKey, that.currentService,
responseTime, dataLength);
}
return uncompressedData;
})
.catch(function(err) {
let endTime = moment();
let responseTime = endTime.diff(startTime, 'miliseconds');
logger.error(bucketName, 'getData', err.message, userKey, that.currentService, responseTime);
throw cacheResponse.error(err);
});
};
Здесь
logger.error(bucketName, 'getData', err.message, userKey, that.currentService, responseTime);
начал давать время отклика в диапазоне от 1061 мс до 109939 мс.
Пожалуйста, предоставьте некоторые данные.