OperationalError & ConnectTimeoutError 在雪花中运行多个查询时(来自许多云运行实例)

时间:2021-04-06 09:58:43

标签: google-cloud-platform snowflake-cloud-data-platform google-cloud-run google-cloud-tasks

我的平台运行在 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)'))

任何想法我该如何解决? 问你有什么问题,我会详细说明

环境设置 -

  • 云任务队列 - 检查“最大并发调度”的多个配置,从 10 到 1000 并发。最大尝试次数为 1,最大调度次数为 500。
  • 云运行 - 5 个热实例,每个实例 1 个请求。可以自动扩展到最多 1000 个实例。
  • snowflake - ACCOUNT 参数为默认值(MAX_CONCURRENCY_LEVEL=8 和 STATEMENT_QUEUED_TIMEOUT_IN_SECONDS=0)并更改为(为了处理这些错误):
    • MAX_CONCURRENCY_LEVEL - 32
    • STATEMENT_QUEUED_TIMEOUT_IN_SECONDS - 600

1 个答案:

答案 0 :(得分:1)

我想通知我们已经发现问题 - 在项目开始时,我们已经创建了一个带有静态 IP 的 VPC 到云运行实例。

遗憾的是,单个 VPC 网络的最大连接数为 25..

相关问题