redis.createClient() 中由于未知原因导致的超时错误

Timeout Error due to unkown reason in redis.createClient()

我正在使用 Redis 作为消息队列。我在其中一个消费者功能中遇到错误。

TimeoutError: operation timed out for an unknown reason
at /home/user/himanshu/dev/backend/XX/node_modules/tarn/lib/PendingOperation.js:16:27
at runNextTicks (internal/process/task_queues.js:60:5)
at processTimers (internal/timers.js:495:9)
at _acquire (/home/user/himanshu/dev/backend/pants3/lib/queue.ts:1224:15)
at async Promise.all (index 1)

为了调试更多,我在 Redis 客户端初始化时检查

const client = redis.createClient(process.env.REDIS_URL); 

并收到以下错误。使用 redis npm 创建客户端。 Redis密码,端口正确。 redis内存没有问题。但仍然出现错误。无法解码错误背后的原因。

RedisClient {
_events: [Object: null prototype] { newListener: [Function (anonymous)] },
_eventsCount: 1,
_maxListeners: undefined,
address: '',
connection_options: {
port: 33694,
host: 'ip-xx-xxx-xx-xx.something',
family: 4
},
connection_id: 1,
connected: false,
ready: false,
should_buffer: false,
max_attempts: 0,
command_queue: Deque {
'0': Command {
  command: 'auth',
  args: [Array],
  buffer_args: false,
  callback: [Function (anonymous)],
  call_on_write: undefined,
  error: Error:
      at new Command (/home/user/himanshu/dev/backend/pants3/node_modules/redis/lib/command.js:12:22)
      at RedisClient.auth (/home/user/himanshu/dev/backend/pants3/node_modules/redis/lib/individualCommands.js:210:42)
      at RedisClient.create_stream (/home/user/himanshu/dev/backend/pants3/node_modules/redis/index.js:308:14)
      at new RedisClient (/home/user/himanshu/dev/backend/pants3/node_modules/redis/index.js:159:10)
      at Object.exports.createClient (/home/user/himanshu/dev/backend/pants3/node_modules/redis/index.js:1089:12)
      at create (/home/user/himanshu/dev/backend/pants3/lib/queue.ts:68:26)
      at /home/user/himanshu/dev/backend/pants3/node_modules/tarn/lib/Pool.js:389:34
      at Object.tryPromise (/home/user/himanshu/dev/backend/pants3/node_modules/tarn/lib/utils.js:53:24)
      at /home/user/himanshu/dev/backend/pants3/node_modules/tarn/lib/Pool.js:389:17
      at new Promise (<anonymous>)
      at callbackOrPromise (/home/user/himanshu/dev/backend/pants3/node_modules/tarn/lib/Pool.js:380:12)
      at Pool._create (/home/user/himanshu/dev/backend/pants3/node_modules/tarn/lib/Pool.js:290:9)
      at Pool._doCreate (/home/user/himanshu/dev/backend/pants3/node_modules/tarn/lib/Pool.js:260:36)
      at Pool._tryAcquireOrCreate (/home/user/himanshu/dev/backend/pants3/node_modules/tarn/lib/Pool.js:211:18)
      at Pool.acquire (/home/user/himanshu/dev/backend/pants3/node_modules/tarn/lib/Pool.js:117:14)
      at _acquire (/home/user/himanshu/dev/backend/pants3/lib/queue.ts:1224:26)
},
_capacity: 16,
_length: 1,
_front: 0
},
offline_queue: Deque { _capacity: 16, _length: 0, _front: 0 },
pipeline_queue: Deque { _capacity: 16, _length: 0, _front: 0 },
connect_timeout: 3600000,
enable_offline_queue: true,
retry_max_delay: null,
retry_timer: null,
retry_totaltime: 0,
retry_delay: 200,
retry_backoff: 1.7,
attempts: 1,
pub_sub_mode: 0,
subscription_set: {},
monitoring: false,
message_buffers: false,
closing: false,
server_info: {},
auth_pass: 'correct-password',
selected_db: undefined,
old_state: null,
fire_strings: true,
pipeline: false,
sub_commands_left: 0,
times_connected: 0,
buffers: false,
options: {
port: '33694',
host: 'ip-xx-xxx-xx-xx.something',
password: 'correct-password',
socket_nodelay: true,
socket_keepalive: true,
return_buffers: false,
detect_buffers: false
},
reply: 'ON',
reply_parser: JavascriptRedisParser {
optionReturnBuffers: false,
optionStringNumbers: false,
returnError: [Function: returnError],
returnFatalError: [Function: returnFatalError],
returnReply: [Function: returnReply],
name: 'javascript',
offset: 0,
buffer: null,
bigStrSize: 0,
bigOffset: 0,
totalChunkSize: 0,
bufferCache: [],
arrayCache: [],
arrayPos: []
},
stream: <ref *1> Socket {
connecting: true,
_hadError: false,
_parent: null,
_host: 'ip-xx-xxx-xx-xx.something',
_readableState: ReadableState {
  objectMode: false,
  highWaterMark: 16384,
  buffer: BufferList { head: null, tail: null, length: 0 },
  length: 0,
  pipes: [],
  flowing: true,
  ended: false,
  endEmitted: false,
  reading: false,
  sync: true,
  needReadable: false,
  emittedReadable: false,
  readableListening: false,
  resumeScheduled: true,
  errorEmitted: false,
  emitClose: false,
  autoDestroy: false,
  destroyed: false,
  errored: null,
  closed: false,
  closeEmitted: false,
  defaultEncoding: 'utf8',
  awaitDrainWriters: null,
  multiAwaitDrain: false,
  readingMore: false,
  decoder: null,
  encoding: null,
  [Symbol(kPaused)]: false
},
_events: [Object: null prototype] {
  end: [Array],
  connect: [Array],
  data: [Function (anonymous)],
  error: [Function (anonymous)],
  clientError: [Function (anonymous)],
  close: [Function],
  drain: [Function (anonymous)]
 },
 _eventsCount: 7,
 _maxListeners: undefined,
 _writableState: WritableState {
  objectMode: false,
  highWaterMark: 16384,
  finalCalled: false,
  needDrain: false,
  ending: false,
  ended: false,
  finished: false,
  destroyed: false,
  decodeStrings: false,
  defaultEncoding: 'utf8',
  length: 47,
  writing: true,
  corked: 0,
  sync: false,
  bufferProcessing: false,
  onwrite: [Function: bound onwrite],
  writecb: [Function: nop],
  writelen: 47,
  afterWriteTickInfo: null,
  buffered: [],
  bufferedIndex: 0,
  allBuffers: true,
  allNoop: true,
  pendingcb: 1,
  prefinished: false,
  errorEmitted: false,
  emitClose: false,
  autoDestroy: false,
  errored: null,
  closed: false,
  closeEmitted: false,
  writable: true
},
allowHalfOpen: false,
_sockname: null,
_pendingData: '*2\r\n\r\nauth\r\n\r\ncorrect-password\r\n',
_pendingEncoding: 'utf8',
server: null,
_server: null,
[Symbol(async_id_symbol)]: 856,
[Symbol(kHandle)]: TCP {
  reading: false,
  onconnection: null,
  [Symbol(owner_symbol)]: [Circular *1]
},
[Symbol(kSetNoDelay)]: true,
[Symbol(lastWriteQueueSize)]: 0,
[Symbol(timeout)]: null,
[Symbol(kBuffer)]: null,
[Symbol(kBufferCb)]: null,
[Symbol(kBufferGen)]: null,
[Symbol(kCapture)]: false,
[Symbol(kBytesRead)]: 0,
[Symbol(kBytesWritten)]: 0
},
[Symbol(kCapture)]: false
}

通过将 Redis 包版本更新到最新版本消除了 Redis 客户端错误。