You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spanner单节点CPU占用过高问题排查咨询

Spanner单节点CPU占用过高问题

基本情况

当前QPS仅200-300,但Spanner单节点CPU占用已达~50%。部署细节:

  • 40个Pod,每个Pod对应订阅一个PubSub Lite分区拉取消息
  • 每条消息是批量压缩事件(包含10-30个事件),从中提取约140个主键,通过IN子句执行数据库查询
  • 每个Pod配置会话池:最大30个会话、5条gRPC通道,查询使用参数化方式

查询代码

stmt := spanner.Statement{
    SQL:    query,
    Params: paramsVal,
}
readOnlyTxn := cc.client.Single()
defer readOnlyTxn.Close()
iter := readOnlyTxn.WithTimestampBound(spanner.MaxStaleness(time.Hour)).Query(cc.ctx, stmt)

会话池配置代码

config := spanner.ClientConfig{
    NumChannels:   numGRPCChannels,
    SessionLabels: labelMap,
    SessionPoolConfig: spanner.SessionPoolConfig{
        InactiveTransactionRemovalOptions: spanner.InactiveTransactionRemovalOptions{
            ActionOnInactiveTransaction: spanner.WarnAndClose,
        },
        MaxOpened: uint64(sessionPoolSize),
    },
}

异常点与疑问

  • Spanner指标显示活跃会话数超过会话池配置的最大值,不确定是否会造成额外CPU开销
  • 用主键的IN子句查询是否会影响性能?
  • 明明是主键查询,但查询计划显示全表扫描,这正常吗?查询计划显示有20次RPC调用,CPU总耗时和响应时间都很高
  • 查询统计数据未发现明显异常;之前用预定义主键做PoC时,单节点能跑到22K QPS且CPU占用70%,但生产环境数据是动态生成的,怀疑预编译语句没被缓存

相关图表

  • Spanner指标图
  • 查询洞察图
  • 查询计划图
  • 查询执行统计图
  • 查询摘要图

内容的提问来源于stack exchange,提问作者Vijay Srinivasaraghavan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:34:53