我的平台运行在 gcp 云上运行。我们使用的数据库是雪花。
我们每周安排一次(使用 Cloud Schedule)一个实际触发多达 200 个任务的作业(目前,将来可能会增加)。所有任务都被添加到某个队列中。
每个任务实际上都是将后调用推送到云运行实例。
每个云运行实例都在处理一个请求(另请参阅环境设置),这意味着 - 一次一个任务。此外,每次云运行都有 2 个活动会话到雪花中的 2 个数据库(每个会话一个)。第一个会话用于“global_db”,另一个用于特定的“person_id”数据库(注意:可能有 2 个活动会话来自不同的云运行实例到同一个 person_id 数据库)
问题:
1 - 当将任务队列“最大并发调度”设置为 1000 时,我得到 503(“请求失败,因为实例未通过就绪检查。”) 问题可能是 gcp 自动缩放能力 - 解决,通过将“最大并发调度”减少到 gcp 可以处理的合理数量。
2- 当将任务队列“最大并发调度”设置为 10 以上时, 我收到多个 ConnectTimeoutError 和 OperationalError,并显示以下消息(我删除了长 ID 并仅放置了 {} 以缩短消息):
sqlalchemy.exc.OperationalError: (snowflake.connector.errors. ) 250003: Failed to execute request: HTTPSConnectionPool(host='*****.us-central1.gcp.snowflakecomputing.com', port=443): Max retries exceeded with url: /session/v1/login-request?request_id={REQUEST_ID}&databaseName={DB_NAME}&warehouse={NAME}&request_guid={GUID} (Caused by ConnectTimeoutError(<snowflake.connector.vendored.urllib3.connection.HTTPSConnection object at 0x3e583ff91550>, 'Connection to *****.us-central1.gcp.snowflakecomputing.com timed out. (connect timeout=60)'))
(此错误的背景:http://sqlalche.me/e/13/e3q8)
snowflake.connector.vendored.urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='*****.us-central1.gcp.snowflakecomputing.com', port=443): Max retries exceeded with url: /session/v1/login-request?request_id={ID}&databaseName={NAME}&warehouse={NAME}&request_guid={GUID}(Caused by ConnectTimeoutError(<snowflake.connector.vendored.urllib3.connection.HTTPSConnection object at 0x3eab877b3ed0>, 'Connection to *****.us-central1.gcp.snowflakecomputing.com timed out. (connect timeout=60)'))
任何想法我该如何解决? 问你有什么问题,我会详细说明
环境设置 -
答案 0 :(得分:1)
我想通知我们已经发现问题 - 在项目开始时,我们已经创建了一个带有静态 IP 的 VPC 到云运行实例。
遗憾的是,单个 VPC 网络的最大连接数为 25..