优化CloudSQL与CloudRun实例间网络吞吐量的问题排查
单CloudRun实例与CloudSQL间数据传输吞吐量过低问题排查与优化需求
部署环境
- 一台CloudSQL实例:配置4TiB SSD、20 vCPU、150GiB内存,带私有IP
- 一张50GiB的MySQL表,已预热并加载至内存
- 一个VPC网络及对应的Serverless VPC连接器,包含2台e2-standard-4类型机器
- 一台CloudRun实例:配置8 vCPU、32GiB内存,运行NodeJS,通过Serverless连接器访问网络
- 所有资源均位于同一区域
问题场景与现状
我们需要通过该单CloudRun实例处理MySQL表中的大量数据,保存结果后退出。根据Google官方文档,每vCPU最大出口吞吐量为2Gbps,但实际使用node/mysql2流式执行select * from ... limit N时,单实例每vCPU仅能达到约400Mbps的吞吐量——由于表已加载至内存,磁盘不会成为瓶颈,该值仅为理论值的1/5。
补充测试信息
- 用Go编写的PoC测试读取MySQL数据,吞吐量仅比NodeJS版本提升约50Mbps
- 启动多个CloudRun实例时,MySQL总出口吞吐量及VPC连接器总吞吐量可超过10Gbps,说明问题出在单CloudRun实例层面
- 业务场景难以水平扩展,多实例方案无法满足需求,必须提升单实例传输速度
需求
- 分析导致单实例低吞吐量的具体原因
- 提供针对性的排查方法
- 若CloudRun或CloudSQL不适用于该场景,给出可行的替代架构方案
内容的提问来源于stack exchange,提问作者Mihail Feraru
相关产品推荐
相关产品推荐

