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



我的平台在gcp云上运行。我们使用的数据库是雪花

我们每周安排一次(使用云计划(一项实际上可以触发多达200个任务的作业(目前,将来可能会增加(。所有任务都被添加到某个队列中。

每个任务实际上都是对云运行实例的推送后调用。

每个云运行实例都处理一个请求(另请参阅环境设置(,意味着一次处理一个任务。此外,每个云运行都有2个活动会话到雪花中的2个数据库(每个数据库一个(。第一个会话用于";global_db";另一种是特定的";person_id";db(注意:来自不同云运行实例的同一person_id db可能有2个活动会话(

问题:

1-当设置任务队列"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个实例
  • 雪花-ACCOUNT参数为默认值(MAX_CONCURRENCY_LEVEL=8和STATEMENT_QUEUED_TIMEOUT_IN_SECONDS=0(,并更改为(为了处理这些错误(:
    • MAX_CONCURRENCY_LEVEL-32
    • 语句_QUEUED_TIMEOUT_IN_SECONDS-600

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

不幸的是,单个VPC网络的最大连接数为25。

最新更新