我们将 App Engine Standard python 3 服务配置为通过无服务器 VPC 服务(根据文档和其他堆栈溢出线程)连接到 Cloud Memorystore。(我在下面包含了 app.yaml 配置)。这一切都运作良好,除非一个实例闲置了一会儿。随着时间的推移,我们看到了大量的:
- 调用 Memorystore 时出现无法解释的长时间挂起,即使它们最终有效
redis.exceptions.ConnectionError: Error 110 connecting to 10.0.0.12:6379. Connection timed out.
redis.exceptions.TimeoutError: Timeout reading from socket
这些事情发生到我不得不回到 App Engine Flexible 的地步,那里的服务运行良好,没有任何上述问题。
我的结论是,Serverless VPC 没有处理 redis 客户端一直努力保持与 redis 的连接打开的事实。我尝试了几种超时设置,但没有任何帮助。有没有人成功部署 App Engine Standard、Memorystore 和 Serverless VPC?
env_variables:
REDISHOST: <IP>
REDISPORT: 6379
network:
name: "projects/<PROJECT-ID>/global/networks/default"
vpc_access_connector:
name: "projects/<PROJECT-ID>/locations/us-central1/connectors/<VPC-NAME>
用于连接 Memorystore 的代码(使用redis-py):
REDIS_CLIENT = redis.StrictRedis(
host=REDIS_HOST,
port=REDIS_PORT,
retry_on_timeout=True,
health_check_interval=30
)
(我尝试了各种超时设置,但找不到任何帮助)