#10108·moto

SNS: 服务器无法处理过多的负载 — AWS SDK 连接池获取超时

作者: mariuszbluestonepim创建于 2026年7月15日更新于 2026年7月26日
标签enhancement

在大量的 SNS 发布请求情况下,AWS SDK 会出现以下错误: java.util.concurrent.CompletionException: software.amazon.awssdk.core.exception.SdkClientException: 无法执行 HTTP 请求: 请求获取连接花费的时间超过配置的最大时间。这表明请求无法在指定的最大时间内从池中获取连接。这可能是由于请求量过高。 当发布速度较高时,动态服务器无法快速处理消息以跟上速度,因此客户端的连接池一直处于饱和状态,获取操作超时。这似乎是单进程吞吐量的限制。 注意: SNS 主题具有 SQS 订阅(即 SNS → SQS 扇出),因此每次发布还会在发布请求中内联地将消息交付到订阅队列中。 同样的客户端配置在 LocalStack 上运行时不会出现错误,这表明问题出在服务器端的吞吐量差异上,而非客户端问题。 环境 moto 5.2.2,服务器模式(motoserver/moto Docker 镜像) Java 版 AWS SDK(Netty 异步客户端,默认池设置) 预期: moto 服务器能够承受大量的 SNS 发布负载(包括 SNS → SQS 交付),而不会耗尽客户端连接池,与 LocalStack 相比。