Node.js Spanner客户端单调用超时配置未按预期生效问题问询
你遇到的超时不符合预期的问题,核心原因如下:
- 你使用的
@google-cloud/spanner@5.15.2版本中,读请求默认开启了重试策略。你配置的gaxOptions.timeout是单次RPC请求的超时时间,客户端会在单次请求超时后自动重试,你观测到的7-8秒是多次重试的总耗时,不是单次请求的超时。 - 官方公开文档未提及
gaxOptions参数是因为该参数属于底层GAX(Google API Extensions)的高级配置,仅在高级开发场景下使用,不会在通用文档中说明。
解决方案
- 若需要设置单调用绝对超时,不需要重试,直接关闭重试策略即可:
runQuery({ gaxOptions: { timeout: 1, retry: null } });
- 若需要保留重试能力,同时限制总耗时,可以配置总超时参数:
runQuery({ gaxOptions: { retry: { totalTimeoutMillis: 1000, // 总超时1秒,包含所有重试的耗时总和 backoffSettings: { initialRetryDelayMillis: 100, retryDelayMultiplier: 1.3, maxRetryDelayMillis: 1000 } } } });
- 若你使用的是读写事务场景,超时配置需要在事务初始化时传入
gaxOptions,而不是在run查询方法中传入。
内容的提问来源于stack exchange,提问作者Benjamin Godlove
相关产品推荐
相关产品推荐

