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 客户端错误。
我正在使用 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 客户端错误。