国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

從零構(gòu)建LLM推理網(wǎng)關(guān):SSE流式轉(zhuǎn)發(fā)、級(jí)聯(lián)取消與背壓控制實(shí)戰(zhàn)

從零構(gòu)建LLM推理網(wǎng)關(guān):SSE流式轉(zhuǎn)發(fā)、級(jí)聯(lián)取消與背壓控制實(shí)戰(zhàn) 1. 為什么我要自己造一個(gè) LLM 推理網(wǎng)關(guān)1.1 從一次線上事故說(shuō)起去年年底我在幫一個(gè)內(nèi)部工具做 AI 能力接入。架構(gòu)很簡(jiǎn)單前端一個(gè)聊天框后端一個(gè) Go 服務(wù)收到請(qǐng)求后轉(zhuǎn)發(fā)給上游的大模型接口拿到流式響應(yīng)再吐回給瀏覽器。上線第一周沒(méi)什么問(wèn)題第二周開(kāi)始陸續(xù)有用戶反饋“回答到一半就卡住了”“刷新之后重新問(wèn)一遍才行”。我去翻日志發(fā)現(xiàn)兩類(lèi)報(bào)錯(cuò)反復(fù)出現(xiàn)。一類(lèi)是stream disconnected before completion: idle timeout waiting for SSE另一類(lèi)是上游返回400: {type:missing_session_id,message:error from provider}。前者說(shuō)明流式連接在傳輸過(guò)程中被靜默掐斷了后者說(shuō)明會(huì)話狀態(tài)在轉(zhuǎn)發(fā)鏈路上丟了。這兩個(gè)問(wèn)題單獨(dú)看都不復(fù)雜但它們暴露的是同一個(gè)根因我把“轉(zhuǎn)發(fā)”這件事想得太簡(jiǎn)單了。一個(gè)真正能扛住生產(chǎn)流量的 LLM 推理網(wǎng)關(guān)至少要解決四件事SSE 流式轉(zhuǎn)發(fā)的正確性、客戶端斷開(kāi)時(shí)的級(jí)聯(lián)取消、上游生產(chǎn)速度超過(guò)下游消費(fèi)速度時(shí)的背壓控制、以及會(huì)話與錯(cuò)誤狀態(tài)的一致性維護(hù)。這四件事在普通 HTTP 轉(zhuǎn)發(fā)里幾乎不用考慮但在 LLM 場(chǎng)景下全部變成了一等公民。這篇文章就是我把這套網(wǎng)關(guān)從零重寫(xiě)一遍的完整記錄包含設(shè)計(jì)取舍、關(guān)鍵代碼結(jié)構(gòu)、參數(shù)計(jì)算和踩過(guò)的坑。1.2 這個(gè)網(wǎng)關(guān)到底解決什么問(wèn)題先把定位說(shuō)清楚。它不是模型推理框架不負(fù)責(zé)加載權(quán)重、不做 batch 調(diào)度它站在客戶端和上游推理服務(wù)之間干的是“流量治理”的活。你可以把它理解成一個(gè)專門(mén)為流式 LLM 響應(yīng)優(yōu)化的反向代理層。它要解決的核心痛點(diǎn)有這么幾個(gè)。第一LLM 響應(yīng)是逐 token 生成的一個(gè)請(qǐng)求可能持續(xù)幾十秒甚至幾分鐘傳統(tǒng)的“收完再轉(zhuǎn)發(fā)”模式完全不可用必須邊收邊轉(zhuǎn)。第二用戶隨時(shí)可能關(guān)掉頁(yè)面或點(diǎn)“停止生成”這時(shí)候如果網(wǎng)關(guān)不主動(dòng)取消上游請(qǐng)求上游會(huì)繼續(xù)燒算力成本直接翻倍。第三上游生成速度快、下游網(wǎng)絡(luò)慢的時(shí)候如果沒(méi)有背壓機(jī)制內(nèi)存里的緩沖區(qū)會(huì)無(wú)限膨脹最后 OOM。第四SSE 協(xié)議本身對(duì)連接中斷很敏感任何中間環(huán)節(jié)的超時(shí)設(shè)置不當(dāng)都會(huì)導(dǎo)致“流斷在半路”。適合讀這篇的人正在做 AI 應(yīng)用后端、需要自己搭一層網(wǎng)關(guān)的 Go 開(kāi)發(fā)者被 SSE 斷流問(wèn)題折磨過(guò)的同學(xué)以及想理解“級(jí)聯(lián)取消”和“背壓”這兩個(gè)詞在真實(shí)系統(tǒng)里到底怎么落地的人。不需要你是 Go 專家但至少要寫(xiě)過(guò) HTTP 服務(wù)知道 goroutine 和 channel 大概是怎么回事。1.3 技術(shù)選型為什么是 Go為什么是 SSE選 Go 的理由很直接。這個(gè)網(wǎng)關(guān)的本質(zhì)是高并發(fā) I/O 密集型轉(zhuǎn)發(fā)每個(gè)請(qǐng)求都要維持一條長(zhǎng)連接同時(shí)可能有成百上千個(gè)請(qǐng)求在飛。Go 的 goroutine 在這種場(chǎng)景下幾乎是降維打擊——每個(gè)連接一個(gè) goroutine寫(xiě)起來(lái)像同步代碼跑起來(lái)是異步性能內(nèi)存占用還低。換成 Java 要處理線程池和回調(diào)地獄換成 Node 單線程又怕 CPU 密集的解析拖垮事件循環(huán)。Go 的net/http標(biāo)準(zhǔn)庫(kù)對(duì)流式響應(yīng)的支持也很成熟Flusher接口直接就能把緩沖區(qū)刷給客戶端。選 SSE 而不是 WebSocket是因?yàn)?LLM 的場(chǎng)景是單向流式推送。客戶端發(fā)一次請(qǐng)求服務(wù)端持續(xù)推 token不需要雙向?qū)崟r(shí)通信。SSE 基于普通 HTTP天然穿透各種代理和負(fù)載均衡實(shí)現(xiàn)成本低瀏覽器端EventSource或者fetch加流讀取都能處理。WebSocket 雖然更靈活但要處理握手升級(jí)、心跳?;?、幀解析對(duì)這個(gè)場(chǎng)景來(lái)說(shuō)是過(guò)度設(shè)計(jì)。熱搜詞里有人問(wèn)“web socket 和 sse”的區(qū)別一句話總結(jié)需要服務(wù)端主動(dòng)推、且只需要單向推選 SSE需要雙向低延遲交互選 WebSocket。2. 整體架構(gòu)與核心設(shè)計(jì)思路2.1 三層結(jié)構(gòu)接入層、轉(zhuǎn)發(fā)層、上游適配層我把網(wǎng)關(guān)拆成三層每層職責(zé)單一方便單獨(dú)測(cè)試和替換。接入層負(fù)責(zé)和客戶端打交道解析請(qǐng)求、校驗(yàn)參數(shù)、建立 SSE 響應(yīng)頭、管理客戶端連接的生命周期。這一層最關(guān)鍵的是拿到一個(gè)context.Context它會(huì)在客戶端斷開(kāi)時(shí)被 cancel這個(gè) context 會(huì)一路往下傳成為級(jí)聯(lián)取消的源頭。轉(zhuǎn)發(fā)層是核心負(fù)責(zé)從上游讀取流、解析 SSE 事件、寫(xiě)入下游。它要同時(shí)監(jiān)聽(tīng)兩個(gè)方向上游的數(shù)據(jù)到達(dá)、下游的寫(xiě)入完成。這里我用一個(gè)io.Pipe或者帶緩沖的 channel 來(lái)解耦讀寫(xiě)速率背壓邏輯就藏在這個(gè)緩沖區(qū)的大小和阻塞行為里。上游適配層負(fù)責(zé)和具體的推理服務(wù)對(duì)接拼裝請(qǐng)求體、處理鑒權(quán)、解析不同廠商的響應(yīng)格式。因?yàn)椴煌嫌蔚?SSE 事件格式不一樣有的用data:有的用event:加data:這一層做歸一化把上游格式轉(zhuǎn)成統(tǒng)一的內(nèi)部事件結(jié)構(gòu)再交給轉(zhuǎn)發(fā)層。這樣分層的好處是換上游只需要改適配層背壓和取消邏輯完全不用動(dòng)。我實(shí)測(cè)下來(lái)接一個(gè)新的上游服務(wù)適配層大概 100 行代碼就能搞定。2.2 級(jí)聯(lián)取消一個(gè) context 串起整條鏈路級(jí)聯(lián)取消這個(gè)詞聽(tīng)起來(lái)玄乎本質(zhì)就是一個(gè)取消信號(hào)沿著調(diào)用鏈往下傳每一層都響應(yīng)它。在 Go 里就是context.Context的 cancel 機(jī)制。具體到我的網(wǎng)關(guān)客戶端發(fā)起請(qǐng)求接入層用r.Context()作為根 context。這個(gè) context 在客戶端斷開(kāi)連接時(shí)會(huì)被 HTTP server 自動(dòng) cancel。轉(zhuǎn)發(fā)層拿著這個(gè) context 去請(qǐng)求上游用的是http.NewRequestWithContext。于是當(dāng)客戶端斷開(kāi)根 context 被 cancel上游請(qǐng)求的 context 也跟著 cancelhttp.Client會(huì)立即關(guān)閉到上游的連接。上游服務(wù)收到連接關(guān)閉也就停止生成了。這里有個(gè)坑我踩過(guò)如果你用的是自己管理的http.Client并且設(shè)置了連接池cancel 之后連接不一定會(huì)立刻關(guān)閉可能會(huì)被復(fù)用。解決辦法是在請(qǐng)求上游時(shí)給 context 加一個(gè)明確的超時(shí)并且確保Transport的DisableKeepAlives在長(zhǎng)連接場(chǎng)景下配置正確。另外goroutine 泄漏是級(jí)聯(lián)取消沒(méi)做好的典型癥狀——客戶端斷了但讀上游的 goroutine 還阻塞在Read上。我的做法是每個(gè)轉(zhuǎn)發(fā) goroutine 都select監(jiān)聽(tīng)ctx.Done()一旦收到信號(hào)立即返回。2.3 背壓讓快的一方等一等慢的一方背壓是流式系統(tǒng)里最容易被忽略、出問(wèn)題又最致命的一環(huán)。想象一個(gè)場(chǎng)景上游模型生成速度是每秒 100 個(gè) token下游用戶的網(wǎng)絡(luò)只能每秒接收 20 個(gè) token。如果沒(méi)有背壓網(wǎng)關(guān)內(nèi)存里會(huì)堆積越來(lái)越多的未發(fā)送數(shù)據(jù)一個(gè)請(qǐng)求堆幾 MB一千個(gè)并發(fā)就是幾個(gè) GBOOM 是遲早的事。背壓的核心思想是用阻塞傳遞壓力。當(dāng)緩沖區(qū)滿了寫(xiě)入方就應(yīng)該阻塞直到消費(fèi)方騰出空間。在 Go 里帶緩沖的 channel 天然支持這個(gè)語(yǔ)義ch - data在緩沖滿時(shí)會(huì)阻塞當(dāng)前 goroutine。我把上游讀到的每個(gè) SSE 事件寫(xiě)進(jìn)一個(gè)容量固定的 channel下游從 channel 里讀并寫(xiě)回客戶端。channel 滿了上游讀取 goroutine 就阻塞自然就“背壓”到了上游——因?yàn)槲也辉購(gòu)纳嫌?socket 讀數(shù)據(jù)TCP 接收窗口會(huì)逐漸縮小最終上游的發(fā)送也會(huì)被阻塞。緩沖區(qū)容量怎么定這是個(gè)需要計(jì)算的參數(shù)。我按“單事件平均大小 × 期望緩沖事件數(shù)”來(lái)估。實(shí)測(cè)一個(gè) token 事件大約 200 字節(jié)到 1KB我取 512 字節(jié)均值。如果希望緩沖 64 個(gè)事件容量就是 32KB 左右。但 channel 存的是事件對(duì)象不是字節(jié)所以我按事件個(gè)數(shù)設(shè)容量64 到 128 之間比較合適。太小會(huì)導(dǎo)致頻繁阻塞、吞吐下降太大則失去背壓意義、內(nèi)存風(fēng)險(xiǎn)上升。3. SSE 流式轉(zhuǎn)發(fā)的核心實(shí)現(xiàn)細(xì)節(jié)3.1 SSE 協(xié)議要點(diǎn)與常見(jiàn)誤區(qū)SSE 的協(xié)議格式其實(shí)很簡(jiǎn)單但細(xì)節(jié)坑很多。一個(gè)標(biāo)準(zhǔn)的事件長(zhǎng)這樣event: message data: {content: 你好} data: {content: 世界}注意幾個(gè)點(diǎn)。第一每個(gè)字段后面跟一個(gè)冒號(hào)和空格然后才是值。第二事件之間用空行分隔也就是連續(xù)兩個(gè)換行符。第三data:可以出現(xiàn)多次會(huì)被拼接成多行數(shù)據(jù)。第四注釋行以冒號(hào)開(kāi)頭常用來(lái)做心跳?;?。最常見(jiàn)的誤區(qū)是換行符處理。SSE 規(guī)范要求用\n但有些上游用\r\n如果你解析時(shí)不兼容就會(huì)把\r當(dāng)成數(shù)據(jù)的一部分導(dǎo)致 JSON 解析失敗。我的做法是解析前統(tǒng)一把\r\n替換成\n。另一個(gè)誤區(qū)是忘記 flush。Go 的http.ResponseWriter默認(rèn)會(huì)緩沖你不調(diào)用Flusher.Flush()數(shù)據(jù)就卡在緩沖區(qū)里客戶端一直收不到表現(xiàn)就是“流不動(dòng)”。每個(gè)事件寫(xiě)完后必須 flush這是硬性要求。還有一個(gè)容易被忽略的點(diǎn)響應(yīng)頭必須設(shè)置Content-Type: text/event-stream并且要禁用各種中間層的緩沖。我一般還會(huì)加上Cache-Control: no-cache和X-Accel-Buffering: no后者是給 Nginx 看的告訴它不要緩沖這個(gè)響應(yīng)。熱搜里那個(gè)curl sse的調(diào)試方法很實(shí)用用curl -N就能看到實(shí)時(shí)的流式輸出-N是禁用 curl 自己的緩沖。3.2 上游讀取逐行掃描與事件組裝從上游讀 SSE 流我用的是bufio.Scanner逐行讀。為什么不一次性ReadAll因?yàn)榱魇浅掷m(xù)的ReadAll會(huì)一直等到連接關(guān)閉那就完全失去流式意義了。掃描的邏輯是讀一行如果是空行說(shuō)明一個(gè)事件結(jié)束把累積的data字段組裝成完整事件發(fā)出去如果是以data:開(kāi)頭去掉前綴存起來(lái)如果是event:開(kāi)頭記錄事件類(lèi)型其他行忽略。這里要注意bufio.Scanner默認(rèn)的單行長(zhǎng)度上限是 64KB如果上游某個(gè)事件特別大比如返回了很長(zhǎng)的 JSON會(huì)報(bào)token too long。解決辦法是用scanner.Buffer把上限調(diào)大我一般設(shè)成 1MB。組裝事件時(shí)有個(gè)細(xì)節(jié)多個(gè)data:行要用\n連接這是規(guī)范要求。我見(jiàn)過(guò)有人直接用拼接不加換行結(jié)果 JSON 里少了換行導(dǎo)致解析出錯(cuò)。另外上游可能在流中間插入心跳注釋行以:開(kāi)頭這些要直接跳過(guò)不能當(dāng)成數(shù)據(jù)。3.3 下游寫(xiě)入錯(cuò)誤處理與優(yōu)雅收尾往下游寫(xiě)的時(shí)候最怕的是寫(xiě)了一半客戶端斷了。這時(shí)候Write會(huì)返回錯(cuò)誤你必須立即停止并且觸發(fā)取消上游。我的處理是每次Write都檢查 error一旦非 nil就 cancel 根 context 并 return。同時(shí)Flush也可能出錯(cuò)同樣要檢查。優(yōu)雅收尾指的是流正常結(jié)束時(shí)要發(fā)一個(gè)明確的結(jié)束事件。有些客戶端依賴特定的結(jié)束標(biāo)記來(lái)判斷“生成完成”。我一般會(huì)發(fā)一個(gè)event: done加空 data或者直接關(guān)閉連接。但要注意關(guān)閉連接前要確保所有緩沖數(shù)據(jù)都 flush 出去了否則最后幾個(gè) token 會(huì)丟。我踩過(guò)一次坑上游發(fā)完最后一個(gè) token 后立即關(guān)閉連接我的掃描循環(huán)退出但最后一個(gè)事件還在 channel 里沒(méi)被下游消費(fèi)結(jié)果用戶看到的是“回答少了一個(gè)字”。解決辦法是掃描循環(huán)退出后先關(guān)閉 channel讓下游把剩余事件消費(fèi)完再結(jié)束響應(yīng)。4. 級(jí)聯(lián)取消與背壓的落地實(shí)現(xiàn)4.1 取消信號(hào)的傳播路徑與 goroutine 管理一個(gè)請(qǐng)求進(jìn)來(lái)我至少會(huì)起兩個(gè) goroutine一個(gè)讀上游一個(gè)寫(xiě)下游。這兩個(gè) goroutine 通過(guò) channel 通信。取消信號(hào)要從根 context 傳到這兩個(gè) goroutine。讀上游的 goroutine 里scanner.Scan()是阻塞的它不響應(yīng) context。所以我不能只靠select ctx.Done()因?yàn)?Scan 卡住的時(shí)候 select 根本沒(méi)機(jī)會(huì)執(zhí)行。解決辦法是在單獨(dú)的 goroutine 里做 Scan主循環(huán) select 監(jiān)聽(tīng)結(jié)果 channel 和 ctx.Done()。或者更簡(jiǎn)單給上游請(qǐng)求設(shè)置 context當(dāng) context cancel 時(shí)底層的resp.Body會(huì)被關(guān)閉Scan()會(huì)返回 false循環(huán)自然退出。這是最干凈的做法依賴http.Client對(duì) context 的支持。寫(xiě)下游的 goroutine 里Write和Flush也可能阻塞下游網(wǎng)絡(luò)慢。這時(shí)候如果客戶端斷開(kāi)Write會(huì)返回錯(cuò)誤goroutine 退出。但如果它阻塞在 Write 上context cancel 不會(huì)直接中斷它。所以我在寫(xiě)之前會(huì)先select檢查一次 ctx寫(xiě)完再檢查一次盡量縮短阻塞窗口。極端情況下依賴 HTTP server 的連接關(guān)閉來(lái)中斷 Write。goroutine 泄漏的排查我用go tool pprof看 goroutine profile如果發(fā)現(xiàn)某個(gè)函數(shù)對(duì)應(yīng)的 goroutine 數(shù)量持續(xù)增長(zhǎng)基本就是泄漏了。常見(jiàn)原因是 channel 沒(méi)人讀導(dǎo)致發(fā)送方永久阻塞或者 context 沒(méi)傳到位。4.2 背壓緩沖區(qū)的容量計(jì)算與動(dòng)態(tài)調(diào)整前面說(shuō)了用帶緩沖 channel 做背壓容量我定在 64。但這個(gè)值不是拍腦袋來(lái)的我做了個(gè)簡(jiǎn)單的計(jì)算。假設(shè)單個(gè)事件平均 512 字節(jié)64 個(gè)事件就是 32KB。單請(qǐng)求內(nèi)存占用 32KB 緩沖 goroutine 棧約 8KB 其他開(kāi)銷(xiāo)算 50KB。1000 并發(fā)就是 50MB完全可控。如果容量設(shè)成 1024單請(qǐng)求就是 512KB1000 并發(fā) 512MB風(fēng)險(xiǎn)就大了。所以 64 是個(gè)內(nèi)存和吞吐的平衡點(diǎn)。但固定容量有個(gè)問(wèn)題不同上游的生成速度差異很大。有的模型每秒吐 200 個(gè) token有的只有 10 個(gè)。對(duì)慢上游64 的緩沖綽綽有余對(duì)快上游可能頻繁觸發(fā)背壓。我的優(yōu)化思路是根據(jù)上游響應(yīng)頭里的速率提示或者前 N 個(gè)事件的到達(dá)間隔動(dòng)態(tài)調(diào)整容量。不過(guò)實(shí)測(cè)下來(lái)固定 64 在大多數(shù)場(chǎng)景已經(jīng)夠用動(dòng)態(tài)調(diào)整的復(fù)雜度收益比不高我就沒(méi)上。如果你要接的上游特別快可以調(diào)到 128 或 256但要同步監(jiān)控內(nèi)存。還有一個(gè)細(xì)節(jié)channel 關(guān)閉的時(shí)機(jī)。讀上游的 goroutine 結(jié)束時(shí)關(guān)閉 channel寫(xiě)下游的 goroutine 用for range ch消費(fèi)channel 關(guān)閉后循環(huán)自動(dòng)退出。這樣不需要額外的 done 信號(hào)邏輯很干凈。但要注意關(guān)閉 channel 的只能是發(fā)送方多個(gè)發(fā)送方時(shí)要用sync.Once或者 WaitGroup 保證只關(guān)一次。4.3 超時(shí)策略idle timeout 與總超時(shí)的配合熱搜里那個(gè)idle timeout waiting for SSE報(bào)錯(cuò)根因就是超時(shí)設(shè)置不當(dāng)。LLM 流式響應(yīng)有個(gè)特點(diǎn)首 token 可能等很久但 token 之間間隔很短。如果你設(shè)一個(gè)總超時(shí) 30 秒那長(zhǎng)回答直接被砍如果你設(shè)一個(gè) idle 超時(shí)多久沒(méi)數(shù)據(jù)就斷那首 token 等待期可能誤傷。我的策略是雙超時(shí)。一個(gè) idle timeout比如 60 秒只要 60 秒內(nèi)有任何數(shù)據(jù)到達(dá)就重置一個(gè)總超時(shí)比如 10 分鐘兜底防止請(qǐng)求永遠(yuǎn)掛著。idle timeout 用time.Timer實(shí)現(xiàn)每次讀到數(shù)據(jù)就Reset??偝瑫r(shí)直接用 context 的WithTimeout。這里有個(gè)坑time.Timer的Reset在 Go 1.23 之前有競(jìng)態(tài)問(wèn)題需要先Stop再 drain channel。Go 1.23 之后Reset語(yǔ)義修正了可以直接用。如果你用的是老版本記得處理這個(gè)細(xì)節(jié)。另外idle timeout 觸發(fā)后要發(fā)一個(gè)明確的錯(cuò)誤事件給客戶端而不是直接斷連這樣前端能給出友好提示。5. 常見(jiàn)問(wèn)題排查與避坑實(shí)錄5.1 流斷在半路從現(xiàn)象到根因的排查路徑“流斷在半路”是我遇到最多的問(wèn)題排查起來(lái)有一套固定路徑。第一步確認(rèn)是上游斷還是下游斷??慈罩纠镒詈笠粭l成功轉(zhuǎn)發(fā)的事件如果上游還在發(fā)但下游沒(méi)收到問(wèn)題在下游寫(xiě)入或網(wǎng)絡(luò)如果上游本身就不發(fā)了問(wèn)題在上游或網(wǎng)關(guān)到上游的連接。第二步檢查超時(shí)配置。idle timeout和中間層Nginx、負(fù)載均衡的超時(shí)都要看。Nginx 默認(rèn)proxy_read_timeout是 60 秒如果你的 idle timeout 也是 60 秒兩者疊加可能提前觸發(fā)。我一般把網(wǎng)關(guān)的 idle timeout 設(shè)得比中間層小讓網(wǎng)關(guān)先感知、先處理。第三步看連接是否被復(fù)用。HTTP/1.1 的 keep-alive 在長(zhǎng)連接場(chǎng)景下可能導(dǎo)致連接被錯(cuò)誤復(fù)用尤其是上游返回了不完整的響應(yīng)時(shí)。我一般對(duì)上游請(qǐng)求設(shè)置Connection: close或者禁用 keep-alive犧牲一點(diǎn)性能換穩(wěn)定性。第四步抓包確認(rèn)。用tcpdump或者 Go 的httptrace看 TCP 層的 FIN/RST 是誰(shuí)先發(fā)的。這一步能定位到具體是哪一端的連接被關(guān)閉。5.2 會(huì)話丟失與 400 錯(cuò)誤的處理熱搜里那個(gè)missing_session_id的 400 錯(cuò)誤本質(zhì)是會(huì)話狀態(tài)在轉(zhuǎn)發(fā)鏈路上沒(méi)有正確傳遞。LLM 服務(wù)通常用 session id 來(lái)關(guān)聯(lián)多輪對(duì)話的上下文。如果網(wǎng)關(guān)在轉(zhuǎn)發(fā)時(shí)丟了 header 或者 cookie上游就找不到會(huì)話。我的處理是接入層把所有和會(huì)話相關(guān)的 header比如X-Session-Id、Authorization、Cookie原樣透?jìng)鞯缴嫌尾蛔鋈魏芜^(guò)濾。同時(shí)如果上游返回 400 且錯(cuò)誤信息里提到 session我會(huì)在網(wǎng)關(guān)層記錄一條明確的日志包含請(qǐng)求 id 和原始 header方便排查。還有一種情況是上游要求 session id 在請(qǐng)求體里而不是 header 里。這時(shí)候適配層要做轉(zhuǎn)換從 header 提取出來(lái)塞進(jìn) body。這個(gè)邏輯因上游而異我把它做成可配置的用配置文件描述“從哪取、放到哪”。5.3 常見(jiàn)問(wèn)題速查表現(xiàn)象可能原因排查方法解決方向流不動(dòng)客戶端無(wú)數(shù)據(jù)忘記 Flush檢查寫(xiě)入后是否調(diào)用 Flush每個(gè)事件后強(qiáng)制 Flush流斷在半路idle timeout 或中間層超時(shí)對(duì)比網(wǎng)關(guān)和 Nginx 超時(shí)配置網(wǎng)關(guān)超時(shí)設(shè)小先感知回答少最后一個(gè)字channel 關(guān)閉時(shí)機(jī)不對(duì)檢查掃描退出后是否消費(fèi)完剩余事件先關(guān) channel 再結(jié)束響應(yīng)內(nèi)存持續(xù)增長(zhǎng)背壓失效或 goroutine 泄漏pprof 看 goroutine 和 heap檢查 channel 容量和 context 傳遞400 missing session會(huì)話 header 丟失對(duì)比客戶端和上游收到的 header透?jìng)鲿?huì)話相關(guān) headerJSON 解析失敗換行符或 data 拼接問(wèn)題打印原始事件內(nèi)容統(tǒng)一換行符多行 data 用 \n 連接上游不停止生成級(jí)聯(lián)取消未生效檢查上游請(qǐng)求是否用了根 context用 NewRequestWithContext5.4 幾個(gè)我踩過(guò)的獨(dú)家坑第一個(gè)坑bufio.Scanner的默認(rèn)緩沖太小。上游返回一個(gè)大的 JSON 事件時(shí)直接報(bào)錯(cuò)退出表現(xiàn)就是流突然斷。調(diào)大scanner.Buffer的 max 到 1MB 解決。第二個(gè)坑http.Flusher不是所有 ResponseWriter 都支持。如果你用了某些中間件包裝了 ResponseWriter可能拿不到 Flusher。我的做法是在接入層用類(lèi)型斷言檢查拿不到就報(bào)錯(cuò)絕不靜默降級(jí)。第三個(gè)坑context 傳遞時(shí)被意外覆蓋。有一次我在適配層里用context.Background()新建了請(qǐng)求結(jié)果級(jí)聯(lián)取消完全失效客戶端斷了上游還在跑。排查了半天才發(fā)現(xiàn)是這里。教訓(xùn)是任何地方新建 context 都要問(wèn)自己“這個(gè) context 的父級(jí)是誰(shuí)”。第四個(gè)坑channel 容量設(shè)太大反而更慢。我一度把容量調(diào)到 1024 想提升吞吐結(jié)果發(fā)現(xiàn)延遲反而上升了因?yàn)閿?shù)據(jù)在緩沖區(qū)里排隊(duì)客戶端要等更久才看到第一個(gè) token。背壓緩沖區(qū)不是越大越好它影響的是延遲和內(nèi)存的權(quán)衡。6. 性能驗(yàn)證與后續(xù)可擴(kuò)展方向6.1 壓測(cè)方法與關(guān)鍵指標(biāo)驗(yàn)證網(wǎng)關(guān)性能我用的是自己寫(xiě)的一個(gè)壓測(cè)工具模擬 N 個(gè)并發(fā)客戶端每個(gè)客戶端發(fā)一個(gè)請(qǐng)求并持續(xù)讀取流直到結(jié)束。關(guān)鍵指標(biāo)有三個(gè)首 token 延遲TTFT、吞吐每秒完成請(qǐng)求數(shù)、內(nèi)存占用。TTFT 反映的是網(wǎng)關(guān)引入的額外延遲。理想情況下網(wǎng)關(guān)的 TTFT 應(yīng)該和直連上游差不多額外開(kāi)銷(xiāo)在毫秒級(jí)。我實(shí)測(cè)下來(lái)網(wǎng)關(guān)引入的 TTFT 增加在 5ms 以內(nèi)可以接受。吞吐方面單機(jī) 8 核跑 1000 并發(fā)CPU 占用在 40% 左右瓶頸主要在上游的生成速度而不是網(wǎng)關(guān)本身。這說(shuō)明網(wǎng)關(guān)的轉(zhuǎn)發(fā)邏輯沒(méi)有成為瓶頸。內(nèi)存占用是重點(diǎn)觀察對(duì)象。1000 并發(fā)下RSS 穩(wěn)定在 200MB 左右沒(méi)有持續(xù)增長(zhǎng)說(shuō)明背壓和 goroutine 管理是有效的。如果看到內(nèi)存曲線一直往上走那一定是哪里泄漏了。6.2 可以繼續(xù)做的優(yōu)化第一個(gè)方向是連接池優(yōu)化。目前對(duì)上游用的是默認(rèn) Transport連接復(fù)用策略可以調(diào)優(yōu)比如設(shè)置MaxIdleConnsPerHost來(lái)匹配并發(fā)量減少建連開(kāi)銷(xiāo)。第二個(gè)方向是多上游負(fù)載均衡?,F(xiàn)在只接一個(gè)上游如果要做高可用需要加一層選擇邏輯根據(jù)上游的健康狀態(tài)和負(fù)載來(lái)分發(fā)請(qǐng)求。這塊可以結(jié)合健康檢查和加權(quán)輪詢。第三個(gè)方向是可觀測(cè)性增強(qiáng)。目前只有基礎(chǔ)日志可以加 Prometheus 指標(biāo)暴露活躍連接數(shù)、背壓觸發(fā)次數(shù)、取消次數(shù)等方便做容量規(guī)劃和告警。第四個(gè)方向是請(qǐng)求級(jí)別的限流。防止單個(gè)用戶占用過(guò)多并發(fā)影響其他人??梢杂昧钆仆八惴ò从脩艟S度限流。這套網(wǎng)關(guān)我從零寫(xiě)到現(xiàn)在大概迭代了三個(gè)版本第一版只做了基本轉(zhuǎn)發(fā)第二版加了取消和背壓第三版做了分層重構(gòu)和錯(cuò)誤處理完善。每一版都是被真實(shí)問(wèn)題逼出來(lái)的。如果你也在做類(lèi)似的東西我的建議是先把級(jí)聯(lián)取消和背壓這兩個(gè)基礎(chǔ)打牢它們決定了系統(tǒng)的下限SSE 的細(xì)節(jié)處理決定了上限。別急著加功能先把流的正確性做扎實(shí)后面擴(kuò)展起來(lái)才不痛苦。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
吉田爱美AV在线| 99国产天美| 超碰在线人妻不卡| 26uuu偷拍亚洲欧洲综合| 人妻激情偷乱视频一区二区三区 | 亚欧性爱ab| 97色97好| 欧美人妻精品一区二区| 激情四射婷婷六月天| 国产捆绑一区| 精品九九九九九九九九九| 亚洲毛片基地专区| 精品国产72| 国产强奸乱伦无码视频| 丝袜熟女2P| 99re99| 黑人嘿嘿嘿超爽免费视频| 99色日| 欧美国产精品久久九九| 99re9这里只有精品| 日韩97| 久久婷婷热| 校园春色美腿丝袜 | 婷婷久久久| 裸体1区| 一本精品日本在线视频精品| 久久av网| 懂色av色欲av蜜臀av| 久久综合女优| 人人操人人摸人人看人人插| 麻豆色约约| 人人透人人操| 三四中文字幕| 7月婷婷综合| 深夜国产福利| 91 丝袜在线| 91东京热男人的天堂| 亚洲AO在线| 99久久久无码精品国产人| 啊啊啊啊啊啊啊国| 自慰白浆在线观看| 人妻久久| 97超级欧美| 多毛小伙内射老太婆 | 欧美性色欧美| 一区二区日韩欧美久久| 一区二区三区在线美女| 天天舔天天日天天射| 26uuu偷拍亚洲欧洲综合| 亚洲综人网| 99爱精品| 亚洲欧美在线观看无码| 97超碰久久| 女人一区| 国产一级αv免费看片| 大香交| 日韩欧美视频青青| 福利操逼| 精品九九| 综合九九| 啊啊啊不要好疼视频| 国产视频一区二区三区在线免费观看| 国产视频大全| 曰韩欧美国产传媒麻豆第一区| 激情天天视频| 嗯嗯啊啊的视频| 女色视频社区| 亚洲第一免费视频| …亚洲黄色厕厕女女在线播…| 九一综合精品视品av| 久久av一级av少妇av高潮| 欧美96在线|欧| 麻豆影音天美视频| 日韩AV电影网站| 超碰97人人cao| 91久久国产精品| 亚洲欧美九九九| 日逼国产| 亚洲欧美在线观看2021| 风月影院十八禁| 亚洲综合有码| 久久久久9999妇女| 97资源超碰| 伊人久久综合影院| 亚洲色交| 91亚洲狠狠色| 青青草玖玖爱| 亚洲天堂第一页| 操婷婷逼| 久久精品国产96精品亚洲拳交| 精品人妻一区二区三区日产| 欧美色爱综合| 精品免费国产二区三区| 无码99| 久久久九九网站| 日韩有码 一区二区三区| 夜夜爽夜夜操| 久久九九热| 国产精品久久久久久夜夜夜| 亚州伊人色综台| 333kkkk·亚洲com久久| 岛国免费黄色网址| 豆花视频操逼网址| 思思视频免费看网站| 国产人妻久久精品一区二区三区| 国产精品视频在线播放| 夜精品久无码| 欧美精品双插| 金典av| 91老司机在线视频免费观看| 久久久久久久久久久人妻| 亚洲欧美日韩精品久久久一区二区 | 日韩av一级黄片| 久久这里是精品| 国产在线播放成人免费| 2019天天干| 九久久九九久视频| 成人在线永久| 夜夜操一区二区| 婷婷久月| 日日夜夜狠狠| 亚洲精品人妻吞精av| 亚洲,日韩,欧美,成人播放| 日本506070| 国产成人五月天丁香花| 日天天九九天堂666| 高精欧美色| 97精品全部| 五月天AV资源| 夜夜欢天天干| 91肉丝| 91社区伊人| 91天天| 神马久久久久久| 青草一区二区| 国产精品免费久久久久久久久久| 91肉片| 特色a在线上| 久久久亚洲| 亚洲色阁| 最新国内自拍av免费| 男女激烈网站最新| 黄色免费网| 天天谢天天干| 丰满高潮18xxxx| 午夜电影在线观看无码专区| 任你艹| 国产日本熟女顶级一区二区三区视频| 高清不卡国产| 青青草五月天| 人妻色情天天操| 九九九九免费视频| 男人的天堂va在线| 欧美A片中文字幕| 久久社区一区二区三区| 丰满的三级少妇欧美久久久| 超碰色大香蕉| 另类欧美色| 97超碰站| 久久亚洲AV成人精品无码| 97任你吞精| 情侣开房子拍 日韩无码 女的很漂亮| 亚洲日本韩国极品一区二区| 日本好吊色视频| 欧美亚洲清纯| 久草加勒比一区在线| 香伊人在线| 岛国视频一二三区| 97超级久久强资源| 日本大香蕉| 欧美色蜜桃97| 91色人妻| 香蕉婷婷| 亚洲精品一二三四区| 干B| 狠狠色五月亚洲91| 国产一区二区三区视频在线看| 欧美综合区| 熟女丝袜视频| 伊人四虎综合| 三男一女不戴套的A片| 久久久免费的精品| 日韩亚洲美女一区久久| 亚洲欧美一区二区不卡视频播放| 一起草视频在线| 天天躁日日躁AAAAXXXX国产 | 久久AV无码网址| 天堂蜜桃无码视频一区二区| 天天天天天天天天综合| 久草资源在线| 中文字幕亚洲热播人妻| 免费网站观看www在线观| 91男人综合| 亚洲啪啪视频免费| 日本99热| 欧美国产操逼| 日韩免费三级黄片电影| 九九热视频在线观看| s片在线观看| 亚洲男人的天堂va亚洲男人社| 精品国产一区二区三区香蕉欧美| 91黑丝露脚| 一区二区三区色综合| 亚洲一区二区AV| 婷婷丁香五月天亚洲天堂网| 国产精品网站www| 亚洲欧美综合图片| 免费人成?大片在线播放| 色99视频| 99re在线视频国产| 国产亚洲精品av一区| 日本一区二区电影网站| 极品另类| 素人播放一区| 特污精品女优骚货黄色视频在线免费观看| 亚洲国产一区二区三区四区国产| 天天综合网1| 久久综合九色综合欧洲98| 日本理论在线| 夜夜高潮夜夜爽国产伦精品| 久久亚洲AV无码专区国产精品 | 91 国产丝袜在线播放-百度| 八戒无码国产午夜福利| 久久精品亚洲东京热色播| 亚欧洲日韩国产精品| 亚洲国产精品9999在线观看| 日韩精品人妻系列无码天堂| 亚洲国产97| 9 9精品一区二区三区| 丝袜天堂网| 欧美另类精品xxxx| 精品9区| 亚洲欧美一区二区网址| 欧美 亚洲精品首页| 久久日韩肥臀| 97精品网站| 欧美综合色| 夜夜做夜夜爽精品视频| 欧美性性性| 超碰78| 岛国A V在线免费看| 91N五十路| 97超久碰| 精品视频久久区| 丰满人妻被猛烈进入中| 97任你吞精| 日韩中文字幕宗合在线| 视频国产精品未满十八禁止在线观看| 亚洲AV在线资源| 99久久久er直播网址| 日本九九久久99| 亚一综合久久久久久久久久| 欧美天天综合站| 特级毛片特黄久久免费看| 亚州色阁| 欧美网站免费| 成人性交午夜免费片| a久久| 色香av| 夂久色| 夜夜欢天天干| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 大奶啊啊好爽| 亚洲资源一区| 搡老女人老妇女老妇老熟女怎么读| 亚洲色图欧美一区二区不卡| 粉嫩国产精品久久久| 黄色二级片网站| 综合网亚洲1| 秋霞Av理论一级在线| 激情抓乳插进去啪啪啪日韩 | 人人模人人看| 五月天玖玖资源站| 四虎AV无码| 欧美日韩中国x| 精品国模无码| 久久久久亚洲精品| 99在线免费视频| 日韩兔费看黄片| 日韩精品三级片长长久久| 青娱乐国产盛宴视频| 亚洲性猛| 999精品女人| 婷婷丁香五月天综合东京热| 久久久久久久久久久久久久久乱码| 校园春色家庭伦理欧美激情| 一级性爱啪啪视频| 久久手机好看网站| 日本不卡在线二区三区| 国产精品久久伊人| 歐美一級亂黃99在綫精品| 久久婷婷一区| 色官网在线| 91AV天美在线视频| 丰满岳乱妇一区二区三区| 成人综合色网| 亚州男人天堂| 性色乱AV一区二区| 大奶的诱惑| 色综合中文字幕不卡| 91精品无码久久久久久久| 天堂精品| 亚洲精品天天影视综合网| 久草看看看| 久操凹凸视频| 天天干夜夜肏| 亚洲操逼无码| 亚洲AV色图一区| 在线强奷到舒服的无码视频| 日韩一级特黄av毛片| 在线 亚洲 网爆 自拍| 精品国产乱码久久久兰草影视| 亚洲精品美女久久久久久久久| 最新日本中文字幕| 久超碰这里只有精品| 天天日天天爽| 91小视频| 国产精品无码久久久久2025| 国产精品ⅴ无码大片在线看.| 男女国产精品| 97日韩欧美亚洲| 亚洲免费97免费| 好湿好紧好爽 视频| 爆操无码| 日韩乱伦AⅤ| 久久午夜鲁丝片| 日韩精品午夜操呦呦不卡影院| 无码天天操| 91欧美偷拍| www.大香| 五月天婷婷色色| 亚洲国产精品无码AV久久久| 日韩一区二区高清在线观看的| 亚洲色图尤物视频| 精品国产乱子伦一区二区三区,精品一| 亚洲欧美一区二区不卡视频播放 | 欧美综合91| 欧美人妻一区二区| 亚洲国产成人精品999| 日韩精品.久久精品.AV女优.天美传媒| 久久久少妇| 久久精品老司| 国产女人成人精品视频| 国产 亚洲 一二三四| 少妇久久久免费| 91五月天| 一本大道不卡一二三区| 国产超碰97| 欧亚乱色熟一区二区三四区| 久久久∴| 婷婷五月花| 伊人久久在线视频观看| 男人在线天堂| 99久久久无码国产精品性男| 亚洲色交| 欧美A√综合网| 一个人免费HD91视频| 中文字幕在线免费观看视频| 免费精品人妻一区二区三| 丁香九月激情| 久久免费精品视频免一| 日韩操逼性鲍| 日本十八禁免费看污网站| 久久香蕉综合一本到3atv| 翘臀vidoes| 天天综合网入口~91| 欧美日韩小说| 在线观看色视频| 99无码精品| 亚洲黄色网址| 十八禁视频一区二区| 在线播放中文字幕| 国产精品天干天干综合网麻豆 | 亚洲人妻av| 无码人妻丰满熟妇奶水区毛片| 日韩综合第八区国产精品| 欧美性爱第一页久久| 色综合V| 国产老太乱伦一区| 国产欧美一区激情交| 东北女人| 精品无码欧美三级| 丁香六月天| 亚洲综合一| 密臀视频三区免费网站| 日韩国产中文字幕| 曰本道人妻久久久在线不卡色视频| 久久久久久网址| 五月丁香婷婷综合| 一本色道久久综合亚洲二区三区| 婷婷丁香九月| 丝袜综合| 亚洲一卡二卡在线免费| 欧美日韩国产高清在线一二三区| 国产家庭乱伦表演| 色综合一区二区三巨| 国产丝袜一区二区三区| 少妇3P性爱自拍| 啊啊啊在线观看免费视频| 女色综合| 黑丝少妇麻豆| 97色在线视频| 亚洲无码国产探花在线观看| α√在线| 成人无码专区精品视频| 亚洲风情在线观看| 六月丁香婷| 美女网站黄页| 日韩欧美经典在线观看| 亚洲天堂另类| 人妻少妇久久久| 上特色A在线| 亚洲一区中文字幕一区| 亚洲国内精品成人不卡| 婷婷中文网| 夜夜嗨老熟女AV一区二区三区| 国产精品久久久久久无码红治院| 欧美熟妇亚洲版| 欧美另类综合久久| 亚洲熟女偷拍在线观看| 女同性恋久久| 欧美加勒比| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚洲成人免费中文字幕| 91精品人妻五十路| 婷婷五月综合激情| 色综91| 亚洲男人的天堂一区二区| 久艾草在线精品视频在线观看| 日本天堂网| 激情抓乳插进去啪啪啪日韩| 91插B网站| 成人在线日韩| 狠狠久久手机视频精品| 青青三级视频| 91五月天| 亚洲天堂精品日韩电影| 无码人妻精品一区二区三区99不卡| 综合网亚| 99久久99九九99九九九| 国产成人91一区二区三区| 天操老女人| 国产小u女在线观看| 97在线免费看视频| 激情综合av| 制服乱伦| 亚洲小电影免费涩涩成人在线高清| 亚洲 另类 丝袜 自拍 动漫| 色97| 欧美日韩性爱操大逼| 欧美九九九九九| 69精品人人人人| 视频国产精品未满十八禁止在线观看| 亚洲小说视频| 色图四区| 99色视频| 欧美 亚洲| 久久九九综合| 欧美伊人电影| www.婷婷| 久热99999| 亚洲 欧美 手机在线观看| 91欧美性| 黄色大香焦1级‘′‘| 日韩精品一二三四| 国产传媒日韩欧美| 99爱久久视频频| 亚洲天堂久久久久久粉红视频| 日本 欧美 亚中文字幕| 天天肏天天干| 日本一二区免费| 亚洲阿v天堂在线| 婷婷伊人一区| 男女日B国产| 国产高清不卡视频| 51国产午夜精品视频| 老熟女熟妇| 欧美1区二区三区公司| 91久久18禁| 蜜乳AV一区| 天美麻豆黄色录像| 欧洲熟妇xxXx欧美老妇裸体 | 久久春色| 亚洲s在线观看| 色99视频| 狠狠色婷婷7777久| 国产精品一区二区 尿失禁| 久久久久久久伊人精品| 国产精品白丝在线播放| 亚洲97综| 屁股久久久久久| 好涩综合| 欧美78P| 9久9久| 91精品人妻电影| 精品美女少妇一区二区| 欧美色爱综合| 日本高清一本二本免费不卡| 欧美,亚洲,日韩,v,天堂,手机在线观看| 美美91成人国产精品欧美精品久久久久久久 | 亚洲素人综合| 屁股久久久久久| 亚州精品丝袜-不卡成人免费| 国产精品爽爽v| julia中文字幕在线观看| 日韩黄色一区二区三区| 国产美女高潮| 精品久久艹| 人人天天欧洲| 婷婷久久综合| 久久精品性| 亚洲超碰AV| 国产久久久久久久久一区二区 | 夜夜性| 日少妇视频| 精品78| 熟人人妻少妇精品久久| 97干97色| 操b在线观看| 一起草高清无码| 日韩日本欧美在线观看| 91快色色色色色| 欧美日韩国产色图在线| 婷婷五月花| 最新一二三区视频| 涩涩久久精品| 日日骚一区二区三区| 亚洲少妇在线观看| 三级特黄60分钟播放| 伊人五月天激情| 久久久婷婷婷| 亚洲91亚洲| 一区二区三区蜜桃成人撸久久东京热 | 老女人老91妇女老热女| 精品无码一二三四区| 伊人久久亚洲色欲综合网站 | 麻豆国产视频精品观看| 欧美日韩国内不卡| 好湿好紧好爽 视频| 75大香蕉| 人妻爽爽啪视频| 亚洲天堂一二| 九九视频黄色片| 日韩AV熟女乱伦| 麻豆精品久久久久久久| 一级@啪啪视频| 粉嫩绯色AV一区二区在线| 久操大香蕉手机视频在线看| 久久久久久中文版| 东京热一区二区中文字幕| 亚州黄站| 亚欧美色图| 二三四区精品| 东京太热久久久| 久久XX| 亚洲一区二区三区欧美日韩| 欧美精品日韩久久久九| 国产一级高清免费观看| 精品国产乱码久久久久久蜜臀| 91国产丝袜美女| AV99热18这里只有精品| 大香蕉男人的天堂| 日本在线不卡123| 婷婷91| 97操操| 久久露脸国产老熟女| 国产免a费看黄片在线| 中国农村熟妇毛片视频| 男女做爰猛烈动高潮A片免费应用| 国内一区二区免费| 超碰97人妻在线| 精品人妻av区天天看片| 综合久久中文字幕综合日韩精品| 欧美一区二区情色| 日韩97P| 性爱乱伦一区| 黄色二级片网站| 亚洲成成熟女人综合一区二区| 日韩欧美中文日韩欧美色| 91人妻丝袜无码| 欧美加勒比| 久/久精品99看9| 一区二区不卡| 亚洲图片日本AⅤ欧美在线| 丝袜六区| 999久久久免费精品国产牛牛| www.久久99| 亚洲日韩资源| 日韩欧美亚洲一区二区三区影院| 色哟哟av网址| 在线可观看的黄色网址| 欧美综合 站| 成人激情无码在线视频| 性爱AV天堂| 在线欧美69V免费观看视频| 精品小视频在线| 国产精品一区二区手机看片| 青青草原综合久久大伊人精品| 91综合网站| 黄网色一区二区三区四区精品| 天天综合站| 亚洲aV性爱| 亚洲成人帖图| 99久热| 亚洲国产熟妇综合色专区| 91丝袜| 一区二区激情国产熟女| 亚洲精品人体| 国产精品久久发布| 日本黄大片在线观看视频| 欧美有码激情视频一区二区三区| 九九AV| 综合久欧洲| 制度丝袜99| 天天大干大香蕉| 中文字幕一区二区三区视频播放| 久久超碰av在线| 人妻熟女av国产网站| 后入人妻无码| caopeng97| 蜜乳成人AV| 亚洲九九视频在线观看| 这里只有精品视频| 日本αv| 中文字幕人乱码中文字的预防方法 | 极品内射| 黄aaaaaaaaaaaaaaaaaa色网站| 99re28在线观看| 人妻夜夜爽天天爽麻豆三区网站| WWW啪啪的com| 中文字幕蜜乳av| 天天摸夜夜操视频| www.激情| 日韩福利综合一区| 色噜噜狠狠色综无码久久| 熟妇熟女视频一区二区三区| 强奸乱伦AV网址| 蜜臀网址在线| 蜜桃中文字日产乱幕4区| 亚洲av综合伊人久久| 97超碰色中文字幕| 99性爱视频| 九一亚洲国产免费| 久久爱97| 凹凸久久人人| 情侣开房子拍 日韩无码 女的很漂亮| 91人妻中文| 欧美草草| 熟妇艹鸡八| 加勒比大香蕉视频在线| 欧美极品性爱天天射| 亚洲丝袜诱惑| 国产一| 97蜜桃综合| 探花精品视频| 国产精品一区二区校花| 囯产精品久久久久久久久久梁医生| 国产乱伦亚洲| 另类欧美色| 丰满人妻一区二区中文| 日本午夜福利视频| 久久思思热| 天天视频综合在线观看视频| 一级黄色性爱裸体视频| 九九av| 亚洲黄日韩无码专区| 嗯嗯啊啊视频在线看| 中文字幕亚韩| 尤物网址| 成人26uuu| 久久久96| 激情另类激情| 麻豆天美在线喷水AV| 亚洲欧美精品一区天堂久久| AV九九| 午夜国产成人福利视频| 男女性感激情网站| 熟妇xxxxx性春色| 亚洲一区二区在线观看91| 国偷自 一区二区| 日韩电影天堂视频二区三区| 日韩中文字幕熟妇人妻 | 国产超碰AV在线精品| 春色91| 99少妇内射| 超碰天天去日穴| 中文字幕av久久爽Av| 亚洲欧美一区二区三区在钱蜜桃| 超碰狠狠操| 久久激情综合| 国产亚洲精品美女久久久久久2021| 一级岛国大片| 亚洲精品一区二区精品| 懂色中文一区二区三区| 乱伦一二三| 国产欧美在线观看免费观看| 啊啊啊在线观看| 又大又大又大又粗爽高潮观看| 美女啊啊啊啊啊啊| 日本不卡在线二区三区| www.男人的天堂| 国产精品乱码久久久、久久| 黄色十八禁| 欧美亚洲韩国视频十五区| 亚洲男人天堂视频| 日本黄色天堂| 尤物AV免费网站| 在线二区不卡| 欧美不在线| 亚洲欧美日韩免费观看| 亚洲激情在线观看一区| 精品久久久不卡一区二区| 小草av不卡亚洲二区| 国产丸一视频| 精品人妻av区天天看片| 日韩免费中文字幕视频| 亚洲精品成人动漫在线| av无码精品久久久久| 一区三区啪啪| www.夜夜| 99国产精品久久久久久久成人热| 国产精品一区二区在钱播放| 福利在线视频一区二区| 国产中文字幕在线观看| 中文字幕视频二区| 无码久久国产| 国产精品99精品视频网站| 一区二区三区探花在线观看| 成人性爱电影一区二区| 蜜桃视频精品一区二区| 欧美老妇综合网| 欧美视频第二页| AV天黑人| 插入逼91| 韩国三级理论在线| 色妹子A V| 国产亚洲精品美女| 麻豆AV一区二区天美传媒| 天天射日日干| 亚洲精品无码久久AV| 99综合| 级品肉射| 97超碰欧美中文字幕| 在线观看无码三级少妇| 九九综合久久| 99精品丰满人妻| 欲香欲色| 麻豆国产96在线| 午夜成人福利影视| 97操B| 人人操人人摸人人骑| 五月天玖玖资源站| 久久亚州高清| 国产女人视频三四五区| av一区二区三区四区| 996热| 久久久999日本大片| 欧美91久久久久| 992大香蕉| 久久草草亚洲蜜桃臀| 久久香蕉国产线看观看猫咪av| 久久久9品一区二区三区| 性欧美第一页| 在线岛| 开心五月激情网| 小泽玛利亚一二三| 啊啊啊啊啊啊啊啊要喷了| 欧美黄页| 欧美毛片在线网| 1024亚洲中文字幕久在线看片你懂的 | 四虎影视永久在线观看精品免费网站| 69视频入口| www.色五月| 啊啊啊好大好湿| 人妻色偷色噜| 天综合网| 精品一级| 97人人射| 新怡红院| 国产精品久久伊人| 中文有码第五页| 91精品人妻| 国模精品一区二区三区苹果色戒 | 啊灬啊灬啊灬啊灬高潮奶出了免费视| 东北毛片| 国产欧美美女免费观看视频| 伦理第一页| 中文字幕永久在线| 亚洲精品欧洲精品| 精品久久无码午夜福利| 婷婷五月天久久精品视频一区二区三区| 久久久91| 亚州色图第三区| 色妇综合网| 男人的天堂不卡一区二区| 中文区中文字幕免费看| 操人91| 老熟乱一区二区三区四区| 精品人人插人人操| 亚州色阁| 懂色AV蜜臀无码精品APP| 久久精品72| 久久性生大片免费观看性| 亚洲精品一区中文字幕乱码| 羞答答AV中文字| 日韩亚洲国产视频| 婷婷九月国产| 日本午夜福利影院| 91狠狠综合久久| 67194无码不卡| 九九视频黄色片| 亚洲综合性网址| 性爱乱伦一区| 精品人妻一区二区三区不卡断| 日欧操屄视频| 呻吟 欧美 日本 中出| 无码自拍SM| 后入式999| 婷婷99狠狠躁天天躁| 欧美翘臀视频网站一区二区三区| 69精品在线| 欧美一二三级精品在线| 成人精品欧洲亚洲| 91一起操| 亚洲日韩人妻中文字幕一区| 国产极品999| 国产精品久久久久无码A√| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 嗯嗯啊好大| 91成人精品在线播放| 欧美97网| 久久激情视频| 久jiu久神马影院| 熟女人妻av在线资源,黄色的资源| 日本久久久久久久久| 日韩精品人妻中文字幕有码午| 日韩在线97| 天美欧美国产| 久久久久久免费电影| 欧美—性—交—色| 操一操摸一摸| 久久社区一区二区三区| 久9视频| 日韩中字av一区| 亚洲熟妇极品| www.激情| 国内黄色精品| 8050午夜少妇无码| 久久性爱视频| 97干在线| 色九月| 91亚洲欧美色图| 亚洲脚交| 亚洲无码精品AV久久久| 国产大学生口爆吞精合集| 天天插天天射| 久久a久久| 美女主播色欲91抠b在线播放| 观看免费区二区三区二| 97自拍一区| 美女让帅哥通她小鸡鸡| 日本 情色 1区2区3区| 日本成a人v网站在线观看| 歐美一級亂黃99在綫精品| 激情抓乳插进去啪啪啪日韩| 欧美一二三| 91高跟美女在线播放| 国产女人高潮视频| 国产成人自拍视频在线| 老司机深夜18禁污污网站| 久久青青草在线视频| 欧美成人国产精品| 亚州乱码中文字幕综合久久久| 操操操日本的逼| 黄色成人网久久久久久| 99999亚洲| 久久动漫精品视频这里只有精品| www久久久| 美中日韩无码| 国产日逼视频| 精品人妻中文字幕高清| 香蕉精品二区二区| 九九五月天| 啊啊啊啊好大好硬啊啊啊啊啊| 性色高清在线| 久九干| 久久,精品一二三| 口爆吞精在线观看| av天堂精品久久| 亚洲天堂五月天国产| 日韩在线观看三级电影| 激情欧美97| 日韩97精| 亚洲诱惑天堂| 国产精品久久久久999| 91少妇香蕉久久精品| 国产超碰在线一区| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 亚洲第一视频 欧美风情 日韩| 97精品97久久| 欧美91久久久久| 东北操逼| 天天干1区2区在线| 中文字幕精品亚洲熟女| 啊啊啊水好多| 亚洲黄色电影| 久久精品国产亚洲粉嫩| 91亚洲欧美激情| 综合性视频99| 毛片99-全集电影手机免费观看完整-B029AV | 99re6久热只有精品6在线直播| 夜夜操二区| 精品九九淫乱男| 青青草在线成人视频| 亚洲性爱无码乱伦av| 亚欧国产无码精品在线| 99热自拍| 天天影视综合网欧美精品| 亚洲精品久| 亚洲另类在线观看| 欧美色棕合| 亚洲色五月| 青青11操操操操操操操操| 免费看美国人人爽,人人操| 国产高潮AA片免费看| 欧美在线观看综合国产| 久久大香蕉| 发朗少妇买婬全视频中文| 欧美乱色| 韩国轻伦国内自拍一区| juliaann丝袜大战黑鬼| 国产日韩人人| 日本高清一本二本免费不卡| 亚洲美女黄色| 国产精品久久久久久久久久久久久久| 欧美色图20P| av网站免费看| 少妇人妻好深太紧了vr91| 亚洲 欧美 手机在线观看| 国产热RE99久久6国产精品首 | 豆花视频操逼网址| 欧美精品91| 两女互慰AV高潮喷水在线观看| 久久曰曰| 欧美日本中字另类在线| 操死我了啊啊啊| 天天色综合天天操| 密臀在线一区尤物| 殴美,日韩国产伦精品| 黑人性欧美| 99超级碰免费视频| 欧美色青| 欧美se亚洲| 国产一级操B视频| 熟女一区二区三区| 欧美日韩国内不卡| 后入综合久久| 99精品伊人| 亚洲欧美日韩精品久| 亚洲资源网| 日本孕妇一区二区视频操逼免费看 | 日韩乱伦AⅤ| 成人性爱美曰韩| 爽爽歪在线视频| 中字一区| 久久国产在线一区二区| 99久久久| 亚洲日韩久久精品一区| 美女久久久久久久久久久| 能在线播放的国产三级| 久久亚洲影院一区二区| 超碰97日韩| 在线观看成人性爱免费小视频| 日日爽夜夜爽| 丰满丝袜少妇AV| 日婷婷| 99精品九九九九九九| 久久天天艹| AV天天在线观看| rivers-china.com| 久久精品久久九九精品| 欧洲无码一区二区| 九九九九一区| 久久超碰国产一区二区三区| 色狠狠色| 青青操视频在线| 秋霞一级鲁丝片A片| 久久久人体| 日韩91网| 亚欧免费| 狠狠躁天天躁日日躁| 精品一区99999| 日韩色欲久久一二三四区| av操操不卡| 久久亚洲一区二区色婷婷| 亚洲五码一区二区三区| 亚洲限制级| 日本操逼视频在线| 91丨九色丨43老版熟女| 青青操日韩| 五月天玖玖资源站| 亚洲偷91色| 无码精品久久久天天影视| 发朗少妇买婬全视频中文| 午夜亚洲| 午夜免费福利视频一区| 久久超碰天天| 亚洲一区日韩精品中文字幕| 女同亚洲欧美一二三区久久电影| 欧美色图校园春色| 五月天色图| 九99久久| 9久久久久| 高清国产av无码| 亚州五月| 亚洲另类在线观看| 欧美的精品的视频| 亚洲中文制服诱惑| 亚洲91网| 久久综合乱子伦国产免费| 97资源久久| 亚洲色图欧美视频| 色天天野狼综合社区| 一区二区三区欧美激情| 久久激情视频| 乱伦1色页| 伊人久久亚洲色欲综合网站 | 国产按摩一区二区三区| 欧美天天综合网| 亚洲中文字幕有码视频一区二区三区| 青春草莓视频在线观看网址| 密臀在线免费观看| 99久久99久久免费精品蜜臀| 爱射综合| 亚洲se91| 麻豆精品A片免费观看| 无码国产Av| 天堂精品| 天天做日日爱夜夜爽| 日韩精品亚洲一二三| 五月天精品| 国产精品成久久久久午夜午夜| 啊啊啊啊二区好大| 成人小电影网站tex| 日韩99神马视频播放片在线播放| 强奸抽插av| 亚洲高清少妇| 欧亚乱色熟女一区二区| 日韩天天综合| 四虎影库国产精品免费| 九九热久久99精品re| 大干人妻| 97干色天堂| 色乱二区| 好爽视频在线观看视频 | 成人怡红院| 欧美一二在线| 中文字幕精品资源在线| 我爱操| 中国AAAAAA黄色片| 久久精品人妻一区二区| 99在线观看| 国产精品人妻一区二区| 欧洲与亚洲欧美精品中文字幕| 黄片com.| 久久久久国产精品久久久| 伊人久久亚洲中文字幕不卡| 色五月婷婷中文字幕| 人人妻人人玩人人澡人人爽| 欧美78| 综合网欧美在线| 九月丁香婷婷色| 欧美最婬乱婬爆婬牲视频| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 一本久道久久综合狠狠爱一密臀精| 91天堂视频| 久热9| 人妻81p| 麻豆天美91| 天操天操夜操夜月月年年操操| 精品无码久久久| 女人被添高潮免费视频| 国产乱伦亚洲| 欧美亚洲图片| 亚洲s色图| 99日韩| 超碰在线人妻中文字幕| 日韩本不卡视频在线观看| 91久精品| 亚洲操操| 亚洲高清视频在线免费观看| 蜜臀网址在线| 激情小说亚洲视频| 久久av色| 人妻少妇蜜桃视频欧美一区| 一级啊性爱在线视频| 国产久久成人| 国产色产精品在线观看 | 欧美操人| 亚洲密乳AV| 国产精品九九九| 日夜精品| 国产97/欧美| 97超碰逼| 99这里有精品| 欧美亚洲中文字幕| 午夜啪| 97爱综合| 精品国产乱码久久久久久网站入口| 日本 情色 1区2区3区| 人人爽人人精品乱人伦AV| 9999伦理视频| 91老司机在线视频免费观看| 色五月av| 欧美亚性天堂| 日韩欧美视频青青| www久久久| 国产一级αv免费看片| 成人性爱美曰韩| 嗯啊抽插大香蕉网页| 91中文字幕| 日韩97P| 精品天堂| …亚洲黄色厕厕女女在线播…| 另类天堂| 国产精品久久久 | 家庭乱伦性爱av| 制度丝袜99| 亚洲va有码在线天堂| 久久这里只有精品9| 天天色欧美| 久久九色| 大JI巴好深好爽又大又粗视频| 精品国模无码| 人人做,人人操,人人摸| 国产欧美日本亚洲精品| 精品欧美А∨无码黑人大荫蒂| 91网九色蝌蚪操熟女| 免费观看性欧美一级| 欧美一级在线观看成人 | 国产五码丝袜屁眼| 亚洲综合性网址| 青青国产在线拍揄自揄拍| 亚洲AV在线资源| 久久妇| 精品免费成人久久| 116美女午夜| 日韩情色AV| 啊啊啊啊啊好舒服视频| 极品销魂美女一区二区| 色九九九| 青青草日本中文字幕| 日韩三级性| 精品午夜福利| JuliaAnn丝袜熟女系列| 视频一区二区免费在线| 黄色香蕉视频网站一区| 久久久性| 日韩人妻免费精品| 五月天久久久|