在調用大模型服務時,高並發情境下可能會出現請求逾時、資源消耗大等問題。為解決這些問題,可通過串連複用最佳化網路連接的使用效率。
串連複用
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 等),建議使用非同步呼叫方式;如果是傳統同步架構,使用同步調用方式即可。