如何解决Google Cloud Run Redis客户端失去与实例的连接
我将Google Cloud Run与Google Memorystore Redis一起使用。 我的应用程序是用Node.js(Express)编写的,并通过以下方式连接到Redis实例:
const asyncRedis = require("async-redis");
const redisClient = asyncRedis.createClient(process.env.REDISPORT,String(process.env.REDISHOST));
redisClient.on('error',(err) => console.error('ERR:REDIS:',err));
.....
const value = await redisClient.get("Code");
应用程序每半小时就会失去与Redis的连接,我会收到错误消息:
AbortError: Redis connection lost and command aborted. It might have been processed.
at RedisClient.flush_and_error (/usr/src/app/node_modules/redis/index.js:362)
at RedisClient.connection_gone (/usr/src/app/node_modules/redis/index.js:664)
at RedisClient.on_error (/usr/src/app/node_modules/redis/index.js:410)
at Socket.<anonymous> (/usr/src/app/node_modules/redis/index.js:279)
at Socket.emit (events.js:315)
at emitErrorNT (internal/streams/destroy.js:92)
at emitErrorAndCloseNT (internal/streams/destroy.js:60)
at processTicksAndRejections (internal/process/task_queues.js:84)
两到三分钟后,连接恢复,并且应用程序在半小时内正常工作,直到下一次断开连接为止。
有什么主意吗?
解决方法
根据官方GCP documentation,可能有几种情况可能导致Redis实例的连接问题。但是,由于您遇到的连通性问题是间歇性的,并且通常您可以成功连接到实例,因此上述情况似乎都不适合您的情况。
在GitHub上有一个类似的issue,其中一些用户在达到其Redis实例的最大客户端数量时会遇到这种情况,但是,我建议您与GCP技术人员support联系。 ,以便他们可以查看您的特定配置并使用内部工具检查您的实例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。