在调用大模型服务时,高并发场景下可能会出现请求超时、资源消耗大等问题。为解决这些问题,可通过连接复用优化网络连接的使用效率。
连接复用
DashScope SDK 支持通过复用已有的连接来减少资源消耗,提高请求处理效率。
- Java SDK:内置连接池机制,支持配置连接数、超时时间等参数,默认启用。
- Python SDK:支持通过传入自定义 Session 实现连接复用,包括同步和异步两种方式。
Java SDK
DashScope Java SDK 内置了连接池机制,默认启用。建议您根据具体业务合理调整连接池的连接数和超时时间,优化连接复用效果。
配置参数说明
参数 | 含义 | 默认值 | 单位 | 备注 |
|---|---|---|---|---|
connectTimeout | 建立连接的超时时间。 | 120 | 秒 | 在低延迟场景中,通常需要设置较短的连接超时时间,以减少等待时间,提高响应速度。 |
readTimeout | 读取数据的超时时间。 | 300 | 秒 | |
writeTimeout | 写入数据的超时时间。 | 60 | 秒 | |
connectionIdleTimeout | 连接池中空闲连接的超时时间。 | 300 | 秒 | 在高并发场景下,适当延长空闲连接超时时间,有利于避免频繁创建连接,从而降低资源消耗。 |
connectionPoolSize | 连接池中的最大连接数。 | 32 | 个 | 在高并发场景下:
建议根据业务需求调整配置。 |
maximumAsyncRequests | 最大并发请求数。全局的并发请求数限制(包含所有主机)。需要小于或等于最大连接数,否则可能出现请求阻塞的情况。 | 32 | 个 | |
maximumAsyncRequestsPerHost | 单台主机的最大并发请求数。需要小于或等于最大并发请求数。 | 32 | 个 |
代码示例
运行代码前,请配置API Key到环境变量并安装最新版SDK。
以下代码示例展示了如何配置连接池相关参数(如超时时间、最大连接数等),并调用大模型服务。您可以根据实际需求调整相关参数,以优化并发性能和资源利用率。
Python SDK
DashScope Python SDK 支持通过传入自定义 Session 实现连接复用,提供HTTP异步(协程)和HTTP同步两种调用方式。
HTTP异步调用方式
在异步调用场景中,您可以通过 aiohttp.ClientSession 配合 aiohttp.TCPConnector 实现连接复用。TCPConnector 支持配置连接数限制等参数:
参数 | 含义 | 默认值 | 备注 |
|---|---|---|---|
limit | 总连接数限制 | 100 | 控制最大连接数。在高并发场景下,适当增加此值可以提高并发能力。 |
limit_per_host | 每个主机的连接数限制 | 0(无限制) | 限制对单个主机的最大连接数,避免对单一服务端造成过大压力。 |
ssl | SSL上下文配置 | None | 用于HTTPS连接的SSL证书验证配置。 |
代码示例
运行代码前,请配置API Key到环境变量并安装最新版SDK。
以下代码示例展示了如何在异步场景下配置连接复用,并调用大模型服务:
HTTP同步调用方式
在同步调用场景中,您可以通过 requests.Session 实现连接复用。在同一个 Session 内的多次请求会复用底层 TCP 连接,避免重复建立连接的开销。
代码示例
运行代码前,请配置API Key到环境变量并安装最新版SDK。
以下代码示例展示了如何在同步场景下配置连接复用,并调用大模型服务:
最佳实践
- Java SDK:根据业务并发量合理配置
connectionPoolSize、maximumAsyncRequests等参数,避免连接数过高或过低。 - Python SDK:推荐使用
with语句自动管理 Session 的生命周期,确保资源正确释放。 - 选择合适的调用方式:如果您的应用是异步架构(如使用 asyncio、FastAPI 等),建议使用异步调用方式;如果是传统同步架构,使用同步调用方式即可。