久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

SpringBoot優(yōu)雅停機(jī)實(shí)戰(zhàn):從SIGTERM到K8s滾動(dòng)發(fā)布全解析

SpringBoot優(yōu)雅停機(jī)實(shí)戰(zhàn):從SIGTERM到K8s滾動(dòng)發(fā)布全解析 凌晨十二點(diǎn)盯著發(fā)布流水線一條kill -15發(fā)下去業(yè)務(wù)群里瞬間冒出好幾條“接口報(bào)錯(cuò)了”“剛才提交的訂單沒返回”。這個(gè)場(chǎng)景是我對(duì) SpringBoot 停機(jī)機(jī)制最初的記憶。默認(rèn)情況下SpringBoot 收到 SIGTERM 并不代表它會(huì)等手頭的事干完而是“幾乎立刻”把 Web 容器和 Spring 容器拆掉所有在途請(qǐng)求直接被 Reset。SpringBoot 優(yōu)雅停機(jī)機(jī)制是解決這類問題的標(biāo)準(zhǔn)方案它從 Spring Boot 2.3 開始由官方原生支持。這篇文章我會(huì)帶你搞清楚優(yōu)雅停機(jī)到底在哪一層生效、兩行配置背后發(fā)生了什么事、實(shí)測(cè)中請(qǐng)求表現(xiàn)差多少、以及真正上線時(shí)最容易忽略的注冊(cè)中心和容器編排坑。適合正在做服務(wù)發(fā)布、彈性伸縮、壓測(cè)驗(yàn)證的 Java 開發(fā)者收藏。1. 從最慘的一次發(fā)布事故說起默認(rèn)停機(jī)到底停掉了什么1.1 kill -15 并不溫柔JVM 鉤子與 Web 容器的同步關(guān)閉很多人有個(gè)誤解以為給 Java 進(jìn)程發(fā)kill -15SIGTERM之后JVM 會(huì)“把當(dāng)前請(qǐng)求處理完再退出”。這個(gè)說法只說對(duì)了一半。JVM 確實(shí)會(huì)執(zhí)行 ShutdownHookSpring Boot 也注冊(cè)了自己的SpringApplicationShutdownHook但問題在于默認(rèn)停機(jī)模式下Spring 容器關(guān)閉 WebServer 時(shí)并不會(huì)等待活躍請(qǐng)求。你可以把那次事故的現(xiàn)場(chǎng)還原一下。Tomcat 收到 stop 指令后Connector 直接進(jìn)入關(guān)閉流程還在執(zhí)行中的 Servlet 線程會(huì)被打斷正在讀取響應(yīng)體的 Nginx 突然收到一個(gè)空的 FIN 包客戶端表現(xiàn)就是 Connection reset by peer。如果你在寫訂單接口可能已經(jīng)完成了數(shù)據(jù)庫事務(wù)提交但響應(yīng)沒送到客戶端調(diào)用方就會(huì)選擇重試于是重復(fù)下單、重復(fù)扣庫存、對(duì)賬不平全都來了。1.2 粗暴關(guān)停的典型故障清單這類問題在線上有非常固定的模式我整理了一張表基本覆蓋了絕大部分事故場(chǎng)景故障現(xiàn)象真實(shí)原因涉及模塊客戶端提示 Connection resetTomcat 在請(qǐng)求進(jìn)行中直接關(guān)閉連接Web 容器下游收到 502/504Nginx 在 Upstream 節(jié)點(diǎn)關(guān)閉瞬間轉(zhuǎn)發(fā)請(qǐng)求失敗負(fù)載均衡消息重復(fù)消費(fèi)消費(fèi)到一半進(jìn)程退出offset 未提交Kafka/RocketMQ事務(wù)已提交但響應(yīng)丟失業(yè)務(wù)邏輯完成響應(yīng)未寫回客戶端Servlet 線程定時(shí)任務(wù)重復(fù)執(zhí)行集群多實(shí)例同時(shí)停機(jī)任務(wù)調(diào)度沒做搶占任務(wù)調(diào)度注冊(cè)中心出現(xiàn)異常實(shí)例服務(wù)端進(jìn)程已死但心跳還沒過期Eureka/Nacos這些故障有個(gè)共同點(diǎn)都不是代碼邏輯錯(cuò)誤而是進(jìn)程退出順序問題。業(yè)務(wù)代碼跑得好好的純粹因?yàn)橥C(jī)姿勢(shì)不對(duì)把“正常完成的請(qǐng)求”變成“客戶端感知到的失敗請(qǐng)求”這才是最虧的。1.3 先分清三個(gè)概念JVM ShutdownHook、Actuator Shutdown 與優(yōu)雅停機(jī)網(wǎng)上搜“SpringBoot 優(yōu)雅停機(jī)”經(jīng)??吹絻煞N做法混在一起容易踩坑。第一種是 JVM 層面的 ShutdownHook代碼里Runtime.getRuntime().addShutdownHook(new Thread(...))它只保證“JVM 退出時(shí)我能執(zhí)行一段代碼”但改變不了 Web 容器已經(jīng)在關(guān)閉的事實(shí)。你用這個(gè)方式做“通知注冊(cè)中心摘流”因?yàn)轫樞虿粚?duì)往往還沒來得及發(fā)請(qǐng)求容器已經(jīng)斷了。第二種是 Actuator 的/actuator/shutdown端點(diǎn)需要手動(dòng)打開并 POST 觸發(fā)。它本質(zhì)上也是觸發(fā)ApplicationContext.close()在 Spring Boot 2.3 之前它是實(shí)現(xiàn)“相對(duì)優(yōu)雅”停機(jī)的主要手段因?yàn)槟憧梢钥刂朴|發(fā)時(shí)機(jī)不讓它依賴操作系統(tǒng)信號(hào)。第三種才是真正的“優(yōu)雅停機(jī)Graceful Shutdown”也就是從 2.3 開始官方內(nèi)置的能力。它做的事情很明確先停止接收新請(qǐng)求然后等待所有在途請(qǐng)求處理完成或超時(shí)最后再關(guān)閉 WebServer 和 Spring 容器。后面我會(huì)從配置開始完整拆解。2. 先別急著加配置版本、容器與兩行核心參數(shù)的前置判斷2.1 Spring Boot 版本是分水嶺低于 2.3 就沒有原生方案Spring Boot 2.3.0.RELEASE 的 Release Notes 明確寫了為內(nèi)嵌 Web 服務(wù)器增加優(yōu)雅停機(jī)支持。所以如果你項(xiàng)目還在 2.1、2.2對(duì)不起server.shutdowngraceful這個(gè)配置是無效的日志里連個(gè)警告都不會(huì)有。我見過有人把server.shutdowngraceful加到 2.2 項(xiàng)目上發(fā)版之后以為萬事大吉結(jié)果壓測(cè)一打就露餡。所以第一步永遠(yuǎn)是看pom.xml里的父版本parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version2.7.18/version relativePath/ /parent如果你日常用的是 Spring Boot 3.x那當(dāng)然更沒問題這套機(jī)制一直延續(xù)下來了。如果是老項(xiàng)目暫時(shí)升不動(dòng)版本至少要做到給負(fù)載均衡或注冊(cè)中心留出摘流時(shí)間再手動(dòng)觸發(fā)/actuator/shutdown不要裸著發(fā) SIGTERM。2.2 核心配置只有兩行但第二行含義經(jīng)常被讀錯(cuò)在application.properties或 yaml里加上server.shutdowngraceful spring.lifecycle.timeout-per-shutdown-phase30s第一行很簡單把默認(rèn)的immediate改成graceful告訴 Spring Boot 走優(yōu)雅停機(jī)流程。第二行spring.lifecycle.timeout-per-shutdown-phase寫的默認(rèn)值是 30s。注意關(guān)鍵詞是per-shutdown-phase也就是“每個(gè)關(guān)閉階段”的超時(shí)時(shí)間不是“整個(gè)停機(jī)過程”的總超時(shí)。Spring 容器里不同 Lifecycle 組件按 phase 分批關(guān)閉理論上有幾個(gè) phase就可能累加幾個(gè) 30s。這一點(diǎn)后面講事件鏈的時(shí)候還會(huì)展開先記住不要把它理解成“最多等 30 秒就強(qiáng)制退出”。2.3 官方支持矩陣四個(gè)內(nèi)嵌容器全都支持但成熟度有差異Spring Boot 官方文檔對(duì)優(yōu)雅停機(jī)的描述是支持所有四個(gè)內(nèi)嵌 Web 服務(wù)器Tomcat、Jetty、Reactor Netty、UndertowServlet 和響應(yīng)式應(yīng)用都可以。但做底層適配的人都知道一個(gè)能力“支持”和“支持得好”是兩回事。Tomcat 的實(shí)現(xiàn)最完整從 9.0.33 開始提供了相對(duì)成熟的 Connector pause 線程池等待機(jī)制Jetty 和 Reactor Netty 也能做到“停止接收新請(qǐng)求等待在途請(qǐng)求完成”Undertow 也能用但我在網(wǎng)上見過一些版本差異導(dǎo)致的邊界問題如果你不是必須用 Undertow建議在生產(chǎn)環(huán)境優(yōu)先用 Tomcat省心。容器是否支持實(shí)際表現(xiàn)Tomcat 9.0.33完整支持pause Connector等待線程池任務(wù)完成日志清晰Jetty 9.4支持等待在途請(qǐng)求但部分版本需要額外注意連接超時(shí)Reactor Netty支持WebFlux 場(chǎng)景可用2.3 起支持等待事件循環(huán)中請(qǐng)求Undertow支持能用但社區(qū)反饋的邊界問題相對(duì)多2.4 開啟前檢查下自己的環(huán)境這里給一個(gè)快速自查清單照著過一遍再上線項(xiàng)目spring-boot-starter-web或spring-boot-starter-webflux版本是否 ≥ 2.3。是否使用內(nèi)嵌容器如果打成 war 丟外置 Tomcat這套配置不直接生效。確認(rèn)停機(jī)時(shí)是kill -15或docker stop、systemctl stop觸發(fā)而不是kill -9。有沒有在代碼里自定義 ShutdownHook如果自定義 Hook 里做了“等待 xx 秒”之類的邏輯要測(cè)試它與 Spring 優(yōu)雅停機(jī)的先后順序別讓兩段等待互相打架。3. 停機(jī)時(shí)到底在等什么SIGTERM 到容器關(guān)閉的完整事件鏈3.1 事件鏈路拆解SIGTERM → JVM Hook → Spring 容器關(guān)閉優(yōu)雅停機(jī)不是魔法它只是在正確的位置插入了等待邏輯。進(jìn)程收到kill -15后JVM 開始執(zhí)行已注冊(cè)的 ShutdownHook。Spring Boot 的SpringApplicationShutdownHook在這個(gè)時(shí)機(jī)被觸發(fā)它會(huì)調(diào)用ApplicationContext.close()。close()內(nèi)部會(huì)先觸發(fā)ContextClosedEvent然后通過DefaultLifecycleProcessor去 stop 所有 Lifecycle 組件。關(guān)鍵就在這里Spring Boot 把內(nèi)嵌 WebServer 的優(yōu)雅停機(jī)封裝成了一個(gè)SmartLifecycle它會(huì)在 Spring 容器關(guān)閉時(shí)先執(zhí)行。這個(gè) Lifecycle 做的事是設(shè)置 Server 不再接收新請(qǐng)求Tomcat 表現(xiàn)為停止 accept 新連接。等待活躍請(qǐng)求執(zhí)行完成。超過timeout-per-shutdown-phase的請(qǐng)求不再等待直接強(qiáng)制關(guān)閉。等它結(jié)束后WebServer 才真正銷毀Spring Bean 才開始挨個(gè)銷毀。這條鏈路保證了“先等業(yè)務(wù)收完尾再拆房子”。3.2 三層等待容器層、線程池層、業(yè)務(wù)資源層實(shí)際等的東西可以分成三層看。第一層是 Web 容器層。Tomcat 的 Connector 進(jìn)入 paused 狀態(tài)后不再 accept 新連接但已經(jīng)建立連接上正在執(zhí)行請(qǐng)求的線程不會(huì)被打斷。第二層是線程池層。Tomcat 內(nèi)部維護(hù)了一個(gè)執(zhí)行 Servlet 的工作線程池優(yōu)雅停機(jī)時(shí)它會(huì)等線程池里所有任務(wù)執(zhí)行完。如果你的某個(gè)接口里定義了 10 秒Thread.sleep它就是這里被等的重點(diǎn)對(duì)象。第三層是業(yè)務(wù)資源層。Spring 容器真正 close 時(shí)HikariCP 數(shù)據(jù)源、消息連接池這些 Bean 才開始逐個(gè)關(guān)閉。HikariCP 關(guān)閉時(shí)也會(huì)等待租出去的連接歸還。這就是為什么“Web 容器等待”和“數(shù)據(jù)源等待”是兩個(gè)不同的時(shí)間窗口別只用接口耗時(shí)去預(yù)算停機(jī)總時(shí)長。3.3 為什么日志里只見 “Commencing graceful shutdown” 卻遲遲不結(jié)束開啟優(yōu)雅停機(jī)后收到 SIGTERM控制臺(tái)會(huì)輸出類似這樣的日志o.s.b.w.e.tomcat.GracefulShutdown : Commencing graceful shutdown. Waiting for active requests to complete很多第一次接優(yōu)雅停機(jī)的人看到這行日志然后發(fā)現(xiàn)進(jìn)程遲遲不退會(huì)慌。其實(shí)這是正?,F(xiàn)象。它正在等待在途請(qǐng)求。等所有請(qǐng)求處理完會(huì)看到o.s.b.w.e.tomcat.GracefulShutdown : Graceful shutdown complete之后 Spring 容器繼續(xù)關(guān)閉剩下的 Bean。整個(gè)停機(jī)的標(biāo)準(zhǔn)日志順序應(yīng)該是Commencing graceful shutdown. Waiting for active requests to complete 這里停頓時(shí)間取決于在途請(qǐng)求 Graceful shutdown complete Closing org.springframework.context.annotation.AnnotationConfigApplicationContext ...如果你始終看不到第二行日志大概率是某個(gè)請(qǐng)求永遠(yuǎn)不返回比如 WebSocket 連接、SSE 長連接、卡死的任務(wù)最后只能等超時(shí)被強(qiáng)制切斷。這也是生產(chǎn)環(huán)境最容易出問題的點(diǎn)看似在“優(yōu)雅等待”實(shí)際在“無限等待”。3.4 timeout-per-shutdown-phase 的真實(shí)累計(jì)邏輯前面說了這個(gè)參數(shù)是“每階段超時(shí)”。Spring 的DefaultLifecycleProcessor會(huì)把所有 Lifecycle 分組每個(gè) phase 單獨(dú)計(jì)時(shí)。如果你既用了 WebServer 的優(yōu)雅停機(jī)又自定義了幾個(gè) SmartLifecycle還接了消息監(jiān)聽容器等等那總停機(jī)時(shí)間可能超過 30s。舉個(gè)實(shí)際例子phase 大的 Lifecycle 先關(guān)閉如果它在 30s 內(nèi)沒結(jié)束后面哪怕還有很多 Bean 沒關(guān)也會(huì)被強(qiáng)制打斷繼續(xù)往下走。所以設(shè)置這個(gè)參數(shù)時(shí)最好把你業(yè)務(wù)里“最長的一個(gè)慢請(qǐng)求耗時(shí) 數(shù)據(jù)源連接歸還時(shí)間 自定義清理時(shí)間”都估算進(jìn)去。寧愿給 60s也不要卡在 30s 邊緣。4. 用壓測(cè)說話優(yōu)雅停機(jī)前后的請(qǐng)求行為對(duì)比4.1 測(cè)試環(huán)境與壓測(cè)準(zhǔn)備配置說再多不如自己跑一輪壓測(cè)直觀。下面是我在本地搭的一組最小驗(yàn)證環(huán)境Spring Boot 2.7 項(xiàng)目 Tomcat一個(gè)慢接口模擬“在處理中的業(yè)務(wù)”。RestController public class GracefulController { GetMapping(/slow) public String slow() throws InterruptedException { System.out.println(請(qǐng)求進(jìn)入 Thread.currentThread().getName() 時(shí)間 System.currentTimeMillis()); TimeUnit.SECONDS.sleep(10); System.out.println(請(qǐng)求完成 Thread.currentThread().getName() 時(shí)間 System.currentTimeMillis()); return ok; } }壓測(cè)用 ab 就夠了不用上 JMeterab -n 500 -c 50 http://127.0.0.1:8080/slow這個(gè)命令的意思是總共 500 個(gè)請(qǐng)求50 并發(fā)每個(gè)請(qǐng)求都要花 10 秒。按下命令后間隔幾秒再開一個(gè)終端執(zhí)行kill -15 $(jps | grep -i app | awk {print $1})然后觀察 ab 的統(tǒng)計(jì)結(jié)果和控制臺(tái)日志。4.2 未開啟優(yōu)雅停機(jī)kill 之后響應(yīng)直接被掐斷先把server.shutdowngraceful注釋掉用默認(rèn)的immediate跑一輪。kill 之后控制臺(tái)立刻開始關(guān)閉容器正在執(zhí)行的接口線程直接被中斷。ab 端的表現(xiàn)非常明顯大量Failed requests。客戶端側(cè)報(bào)Connection reset by peer。不管接口邏輯后面還有沒有收尾工作一律不執(zhí)行。最終輸出的Complete requests遠(yuǎn)小于 500。我在實(shí)際壓測(cè)中看到過更夸張的情況有些請(qǐng)求已經(jīng)進(jìn)入 Tomcat 工作線程但還沒來得及打印“請(qǐng)求進(jìn)入”進(jìn)程就關(guān)了。這類請(qǐng)求就是“連業(yè)務(wù)代碼都沒跑完就被掐斷”的典型。4.3 開啟優(yōu)雅停機(jī)新請(qǐng)求被拒絕在途請(qǐng)求正常收尾然后把兩行配置加上重新啟動(dòng)并壓測(cè)。中途 kill -15重點(diǎn)關(guān)注幾個(gè)表現(xiàn)第一控制臺(tái)輸出Commencing graceful shutdown之后原本已經(jīng)在跑的接口線程繼續(xù)打印“請(qǐng)求完成”沒有中斷異常。第二ab 的Complete requests和Failed requests不再難看。已經(jīng)進(jìn)入 Tomcat 的請(qǐng)求基本都能正常拿到響應(yīng)。第三停機(jī)期間新進(jìn)來的請(qǐng)求會(huì)失敗因?yàn)槿萜饕呀?jīng)不再 accept。你會(huì)在 Tomcat 日志里看到連接被拒絕的痕跡這是預(yù)期行為。所以優(yōu)雅停機(jī)的核心價(jià)值不是“所有請(qǐng)求都不失敗”而是“已經(jīng)進(jìn)入的請(qǐng)求別被半路打死”。至于新請(qǐng)求本來就應(yīng)該靠前面的負(fù)載均衡摘流解決這屬于第 5 章要討論的問題。4.4 超時(shí)場(chǎng)景超過等待上限的請(qǐng)求最終怎么收?qǐng)鲈衮?yàn)證一個(gè)邊界如果請(qǐng)求耗時(shí)超過timeout-per-shutdown-phase會(huì)怎樣把spring.lifecycle.timeout-per-shutdown-phase改成3s然后接口 sleep 10 秒壓測(cè)中途 kill。你會(huì)發(fā)現(xiàn)3 秒之后日志里出現(xiàn)容器強(qiáng)制關(guān)閉的動(dòng)作。那個(gè)還在 sleep 的請(qǐng)求被中斷客戶端同樣會(huì)收到連接重置。所以優(yōu)雅停機(jī)不是“無限等”它是有上限的。上限到了該斷還是斷。這個(gè)測(cè)試特別適合用來跟業(yè)務(wù)方對(duì)齊預(yù)期停機(jī)窗口內(nèi)新請(qǐng)求會(huì)失敗超長請(qǐng)求會(huì)失敗只有“正常長度”的在途請(qǐng)求能被保護(hù)。4.5 生產(chǎn)視角看待壓測(cè)結(jié)果跑完這些對(duì)比我建議把結(jié)論寫進(jìn)發(fā)布手冊(cè)發(fā)布前先確認(rèn) Kafka 消費(fèi)位移、消息推送、文件上傳這類長任務(wù)耗時(shí)不超預(yù)算。壓測(cè)結(jié)論要讓運(yùn)維、QA、后端三方都看到別只停留在“我這邊加了配置”。把壓測(cè)中的Graceful shutdown complete日志出現(xiàn)時(shí)間點(diǎn)記錄下來作為每次發(fā)布前的參考基線。5. 單機(jī)優(yōu)雅不解決流量分配注冊(cè)中心、Nginx、Docker 和 K8s 的配合5.1 最容易被忽視的坑負(fù)載均衡還在往停機(jī)節(jié)點(diǎn)甩流量單機(jī)優(yōu)雅停機(jī)只解決“請(qǐng)求已經(jīng)進(jìn)來了”的情況。但發(fā)布的時(shí)候前面掛的 Nginx、Gateway、注冊(cè)中心客戶端并不知道這個(gè)節(jié)點(diǎn)正在停機(jī)它們?nèi)詴?huì)把新請(qǐng)求轉(zhuǎn)發(fā)過來。這個(gè)瞬間連接被拒、超時(shí)、報(bào)錯(cuò)還是會(huì)重演。我見過一個(gè)團(tuán)隊(duì)做出來的停機(jī)順序是反的先 kill 進(jìn)程等容器優(yōu)雅停完了再去 Nginx 摘節(jié)點(diǎn)。摘流事件發(fā)生在進(jìn)程死亡之后前面的用戶流量已經(jīng)遭殃了。正確的順序應(yīng)該是先摘流再停機(jī)。摘流手段根據(jù)你的流量入口不同有幾種做法下面分開說。5.2 手動(dòng)摘流Nginx、Eureka、Nacos、Consul 分別怎么處理如果你們上游是 Nginx最直接的健康檢查方案是Spring Boot 暴露一個(gè)健康檢查接口停機(jī)前先把該接口狀態(tài)改成 DOWNNginx 通過max_fails或主動(dòng)健康檢查摘掉這個(gè) upstream 節(jié)點(diǎn)。比較粗暴但有效的做法是在停機(jī)前用腳本調(diào) Nginx 接口直接標(biāo)記 down。如果用的是注冊(cè)中心更標(biāo)準(zhǔn)化的做法是調(diào)用服務(wù)治理 API 提前反注冊(cè)注冊(cè)中心摘流方式說明Nacosnacos-client的deregisterInstance主動(dòng)摘除后客戶端拉取新列表需要時(shí)間Eureka發(fā)心跳把狀態(tài)置為 OUT_OF_SERVICE配合 eureka 客戶端緩存刷新Consul服務(wù)實(shí)例標(biāo)記為 maintenance 或反注冊(cè)同樣存在傳播延遲無論哪種方式都要記住一個(gè)現(xiàn)實(shí)注冊(cè)中心的摘流是異步傳播的客戶端可能存在緩存延遲。所以不要“反注冊(cè)完立刻殺進(jìn)程”要留一個(gè)緩沖窗口比如再等 5~10 秒等流量真的淡出再停。5.3 Docker stop 的 10 秒絞刑默認(rèn) STOP_TIMEOUT 與 30 秒優(yōu)雅超時(shí)的沖突這塊是網(wǎng)上抱怨最多、也最隱蔽的坑。用 Docker 跑 SpringBoot 時(shí)docker stop默認(rèn)只等 10 秒超過 10 秒直接SIGKILL??墒莝pring.lifecycle.timeout-per-shutdown-phase默認(rèn)是 30s。如果你的停機(jī)時(shí)間超過 10sDocker 會(huì)毫不客氣地把進(jìn)程干掉優(yōu)雅停機(jī)形同虛設(shè)。解決辦法有三個(gè)# 運(yùn)行時(shí)指定 docker run --stop-timeout 60 your-image # compose 文件 services: app: stop_grace_period: 60s# 更推薦的還是在 Dockerfile 里明確信號(hào) STOPSIGNAL SIGTERM注意這行STOPSIGNAL SIGTERM有些基礎(chǔ)鏡像或啟動(dòng)腳本會(huì)對(duì)信號(hào)做二次轉(zhuǎn)發(fā)如果默認(rèn)不是SIGTERM優(yōu)雅停機(jī)可能根本沒被觸發(fā)。Dockerfile 里寫清楚就沒有這個(gè)歧義。5.4 Kubernetes 滾動(dòng)發(fā)布readiness 探針與 preStop 的最佳姿勢(shì)K8s 場(chǎng)景跟 Docker 又不一樣因?yàn)?K8s 控制的是 Pod 生命周期它默認(rèn)給了terminationGracePeriodSeconds: 30s這個(gè)窗口要大于你預(yù)估的優(yōu)雅停機(jī)時(shí)間。推薦的做法是用 readiness 探針配合 preStop hookspec: terminationGracePeriodSeconds: 60 containers: - name: app readinessProbe: httpGet: path: /actuator/health/readiness port: 8080 initialDelaySeconds: 10 periodSeconds: 5 lifecycle: preStop: exec: command: [/bin/sh, -c, sleep 5]這里面的邏輯是K8s 在停止 Pod 前會(huì)先把該 Pod 從 Service Endpoint 中摘掉但摘掉動(dòng)作的生效也要時(shí)間preStop里 sleep 幾秒等于給了 K8s 一個(gè)緩沖。sleep 結(jié)束K8s 才發(fā) SIGTERM此時(shí)流量已經(jīng)基本不來了Spring Boot 才開始優(yōu)雅停機(jī)。這樣組合起來才能真正做到“先摘流再等請(qǐng)求最后殺進(jìn)程”。5.5 多實(shí)例同時(shí)停機(jī)的雪崩問題分批發(fā)布最后一個(gè)集群層面的坑如果你有多個(gè)實(shí)例發(fā)布系統(tǒng)把實(shí)例 A、B、C 同時(shí) kill那它們同時(shí)在優(yōu)雅停機(jī)同時(shí)在等各自的重請(qǐng)求完成。等它們?nèi)恐貑⑼曛虚g出現(xiàn)的空閑窗口可能直接把整個(gè)服務(wù)的容量打穿。穩(wěn)妥做法是分批發(fā)布先把流量摘掉一部分停一個(gè)、起一個(gè)。滾動(dòng)發(fā)布有天然的順序但如果你是自己寫腳本發(fā)布一定要手動(dòng)控制并發(fā)數(shù)。這個(gè)經(jīng)驗(yàn)我在線上吃過虧優(yōu)雅停機(jī)修好了“單機(jī)請(qǐng)求被掐斷”卻差點(diǎn)因?yàn)椤叭繉?shí)例同時(shí)停機(jī)”導(dǎo)致服務(wù)不可用。6. 給業(yè)務(wù)留足收尾時(shí)間事件監(jiān)聽、Lifecycle 順序與上線檢查清單6.1 ContextClosedEvent別在 Web 容器停止后再做異步收尾優(yōu)雅停機(jī)等于給了你一個(gè)“業(yè)務(wù)收尾”的時(shí)間窗口。但很多團(tuán)隊(duì)把收尾邏輯寫在PreDestroy或自定義 ShutdownHook 里順序非常不可控。更可控的方式是監(jiān)聽ContextClosedEvent。這個(gè)事件在 Spring 容器開始關(guān)閉時(shí)發(fā)出此時(shí) Bean 還都活著你可以在這時(shí)候通知消息隊(duì)列暫停消費(fèi)、把服務(wù)狀態(tài)標(biāo)記為“停止接收流量”、保存內(nèi)存中的批次數(shù)據(jù)等。Component public class ShutdownListener { EventListener(ContextClosedEvent.class) public void onShutdown(ContextClosedEvent event) { // 1. 暫停消息消費(fèi) // 2. 觸發(fā)緩存刷新或持久化 // 3. 標(biāo)記健康檢查為 DOWN System.out.println(容器開始關(guān)閉執(zhí)行業(yè)務(wù)收尾); } }但要注意這個(gè)回調(diào)里不要做耗時(shí)太長的操作它會(huì)被計(jì)入整個(gè)關(guān)閉流程超時(shí)一樣會(huì)被強(qiáng)殺。6.2 SmartLifecycle 與 phase 控制注冊(cè)中心為什么必須放在高 phase如果你需要在 Web 容器停止之前就把注冊(cè)中心摘掉更規(guī)范的做法是實(shí)現(xiàn)SmartLifecycle并給一個(gè)較大的 phase。Spring 的規(guī)則是停止時(shí)數(shù)字越大越先關(guān)閉。所以摘流邏輯應(yīng)該用 Integer.MAX_VALUE 附近的 phase確保它排在 WebServer 優(yōu)雅停機(jī)之前。Component public class DeregisterLifecycle implements SmartLifecycle { private volatile boolean running; Override public void start() { this.running true; } Override public void stop() { // 在這里調(diào)用 Nacos / Eureka / Consul 摘流 System.out.println(先從注冊(cè)中心摘除實(shí)例); this.running false; } Override public boolean isRunning() { return this.running; } Override public int getPhase() { return Integer.MAX_VALUE; } }這個(gè)模式比在ContextClosedEvent里寫更嚴(yán)謹(jǐn)因?yàn)樗?Spring 的關(guān)閉順序是同一套機(jī)制不用擔(dān)心某個(gè) Bean 提前銷毀導(dǎo)致調(diào)用失敗。不過也要注意摘流后必須在注冊(cè)中心傳播延遲里再拖幾秒所以我一般會(huì)在stop()里加一個(gè)輕量 sleep別一摘完就立刻進(jìn)入下一步。6.3 定時(shí)任務(wù)、線程池、數(shù)據(jù)庫連接池在停機(jī)期的真實(shí)表現(xiàn)如果你項(xiàng)目里有Scheduled定時(shí)任務(wù)默認(rèn)情況下它們跑在單線程調(diào)度器里。優(yōu)雅停機(jī)過程中這些任務(wù)不會(huì)自動(dòng)取消如果某個(gè)任務(wù)正在刷新緩存或跑批量任務(wù)它也會(huì)被容器關(guān)閉打斷。我的建議是給這些異步任務(wù)顯式指定一個(gè)線程池并在關(guān)閉時(shí)主動(dòng) shutdown。這樣能保證優(yōu)雅停機(jī)時(shí)任務(wù)執(zhí)行到安全邊界才退出。數(shù)據(jù)庫連接池這塊HikariCP 在容器關(guān)閉時(shí)會(huì)等待租借出去的連接歸還但默認(rèn)的等待時(shí)間并不長。如果某個(gè)慢 SQL 在停機(jī)瞬間還沒跑完Hikari 的連接會(huì)被強(qiáng)制釋放事務(wù)可能回滾。所以你真正要評(píng)估的是“業(yè)務(wù)慢請(qǐng)求的最差耗時(shí)”而不是平均值。6.4 上線前照著抄的停機(jī)檢查清單最后給一份可以直接抄進(jìn)發(fā)布手冊(cè)的檢查清單確認(rèn) Spring Boot ≥ 2.3配置了server.shutdowngraceful且把timeout-per-shutdown-phase按最壞情況調(diào)大。用kill -15壓測(cè)一次確認(rèn)出現(xiàn)Commencing graceful shutdown和Graceful shutdown complete兩行日志。Docker 場(chǎng)景檢查stop-timeout或stop_grace_periodK8s 場(chǎng)景檢查terminationGracePeriodSeconds與 preStop。確認(rèn)注冊(cè)中心摘流在進(jìn)程退出前完成并留了緩沖時(shí)間。明確新請(qǐng)求在停機(jī)窗口內(nèi)注定會(huì)失敗由負(fù)載均衡/網(wǎng)關(guān)做兜底。針對(duì)長連接和長期占用線程的請(qǐng)求WebSocket、SSE、文件上傳單獨(dú)確認(rèn)超時(shí)策略。我個(gè)人的體會(huì)是優(yōu)雅停機(jī)不是一個(gè)讓“所有請(qǐng)求零失敗”的方案它是一個(gè)讓“該成功的請(qǐng)求能成功”的方案。真正要啃的硬骨頭在停機(jī)前的那幾步流量調(diào)度上。把代碼里的等待時(shí)間、容器參數(shù)里的超時(shí)時(shí)間、K8s 里的優(yōu)雅終止時(shí)間這三件事對(duì)齊線上發(fā)布才算真的穩(wěn)健。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
99re视频在线播放青草| 伊人五月天婷婷| 琪琪精品免费一区二区三区| 成人性爱高清视频免费看| 久久综合婷婷| 超碰九7免费| 中国一级操逼视频| 日韩人妻精品中文字幕| 国产67194| 国产AV色黄看到爽| 91oumei| 韩国女主播青草在线| 亚州,欧美在线| 亚洲精品成人激情在线| 久草精品一区| 免费看黄视频亚洲网站| 人妻在线大香蕉| 无码操逼网| 国产精品午夜成人福利| 黑人狂躁日本妞一区二区三区| 亚洲A色| 黄色人人| 欧美综合综合| 久久国色天香香蕉| 美女极品一区二区三区| 久久久久久99999国产精品| 自拍偷拍 日韩无码| 成人精品水蜜桃久久久久久久| 亚洲欧美国产成人综合不卡| 欧美亚洲综合高清在线| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 你草精品在线视频| 蜜臀久久99精品久久久| 日日天天久久啊啊aaa| 超碰97久久| 日日日啊啊啊| 秋霞曰韩R级| 色综九九九一区| 操逼日韩无码| 久久亚洲欧美中文字幕国语| 四虎884| 亚洲无套久久嗯嗯| 欧美97日韩| 人妻久久久久久| 欧美国产精品| 亚洲AV麻豆Aⅴ无码电影一| 欧美精品三级黄片| 97草草| 精品性爱一二三区| 欧美黄色手机在线观看| 久久香蕉国产线看观看亚洲女人 | www久久久| 黑人精品一区二区在线播放| 日韩色香| 免费97视频| 五月天激情婷婷| 午夜福利在线合集| 静品嫩模一区二区| 黄色性爱网网| 秋霞蝌科网日本一区| 视频二区美腿丝袜制服人妻欧美| 91另类| 亚洲激情四射| 国产一区二区a毛片| 成年人黄色视频免费| 91狠狠综合久久| 色欲无码人妻日韩欧美精品| 日韩激情毛片一级久久久| 国产超碰AV在线精品| 激情网色| 眼镜人妻101.com| 亚洲精品一区二区精华| xxxx网站亚洲精品| 18禁美女裸体无遮挡啪啪| 91性高朝久久久久久久久| 国产精品久久久久久久久久久久| 神马麻豆福利院| 亚洲麻豆av一区二区| AAAA级日本片免费视频| 免费一级黄色录像影片| 伊人网在线视频| 欧美在线55555| 91美女视频直播| 超碰在线人妻中文字幕| 国产精品免费视频人成| 久久性爱视频| 97超碰资源网| 精品视频一区二区| 一区二区三区欧美激情| 观看免费区二区三区二| 天天干1区2区在线| 超碰色男人操熟女| 欧美 亚洲 在线| 亚州高清色综合| 国产熟女乱论| 人妻第一页| 98色网| 91网九色蝌蚪操熟女| 91jk色拍| 婷婷五月天小说| 日本大片日本一区二区免费高清| 深夜激情| 高清肉丝中文无码| 一区二区偷拍拍视频| 午夜视频黄| 亚洲AV在线资源| 伊人成人中文字幕久久网| 麻豆天美传媒毛片| 98一区二区精品| 精品人妻一区二区三区日产| 男人精品天堂一区| 二区熟妇韩日| 4399成人黄A片| 色色毛片| 97久久超碰| 日本黄色XXX| 九月色婷婷| 久久久免费的精品| 69精品在线| 欧美日日操| 人人操人人肉久久精品| 精品一区二区三区蜜桃| 九九成人精品| 日日夜夜国产综合| 色91综合网| 国产丝袜高跟美女av免费观看| 天天日天天干天天摸天天操| 色亚洲欧美| 国产精品无码久久久久2028| 日韩精品一区的| 亚洲中文字幕有码视频一区二区三区| 久久久草成人网站久久久草成人久久久草久久久 | 狼人综合婷婷激情四射 | 人妻熟妇一区二区三区| 久久久久久AⅤ无码免费肉站| 欧美第38页| 国产精品视频在线观看| 1级午夜影院费免区| 久久久久久亚洲精品不卡人乳 | 老熟女91视频| 国产AV天美| 久久免费99精品久久久久久| 日本中文字幕一区| 九九无码| 久久久久人妻二区精品叶可怜| 黄色高清久久无码依人| 精品中文字幕一区二区l - 百度| 污污汅18禁网站在线永久免费观看 | 黑丝自慰喷水网站| 亚洲综合性网址| 可以免费观看的AV| 欧美精品一区二区少妇免费A片| 欧美色图中文字幕| 中文字幕 国产区| 亚洲人成在线放东京热| 丁香婷婷激情五月天无毒不卡| 五月丁香六月综合缴清无码| 欧美手机在线综合| 久久鲁夜| 欧美熟妇人体| 精品久久久九九九孕妇| 色99视频| 超清福利精品视频在线| 欧美一区二区三区不卡高清视频| 区自美91| 国产性刺激| 再深点灬舒服灬太大了添视频| 91精品导航| 欧美色天堂网在线视频| 亚洲综合九九| 精品久久97| 亚洲欧美97√| 天天综合网合集91| 国产精品久久久777| 婷婷五月天色色| 天天操人人操狠狠插| 新亚洲无码| 91久热| 偷拍色图| 国产精品乱码久久久久久久久| 日本东京热大香蕉a片| 日日干夜夜操视频h| 久久久久久久久久久999| 久久 亚洲 日韩 人妻| 婷婷伊人一区| 五月激情小说| 人妻精品综合中文字幕在线| 亚洲清纯唯美| 丰满人妻一区| 午夜精品久久久久久久99| 国产丸一视频| 99re99| 色五月69夫妻| 国产福利夜| 久久婷婷欧美| 久久夜精品一区二区三区| 精品一区二区麻豆| 丝袜视频网国产90| 午夜精品人妻二区三区| 欧美综合色| 日日操天天操| 国产情色第一第二页在线观看| 天天日天天屌天天操| 任你干在线视频| 青青草原av| 国产强奸乱伦第1页| 蜜臀中文字幕| 国产女乱淫真高清免费视频| 啊啊啊啊嗯嗯嗯用力好爽 | 国产成人bd在线观看| 91视频国品一二三区| 国产久久一区二区| 无码人妻1727| 色999五月色| 国产中文福利| 免费自拍三级综合| 天天操天天射青青草| 偷拍新久久| 岛国免费黄色网址| 日本超碰色精品| 白 大 人妻 区 在线| 精品久操| 久久精品区| 黑丝91视频| 日本2020一区二区| 日本 欧美 亚中文字幕| 中文久久久| 久久一区二区高清免费| 亚洲AV无码天美传媒一区| asc国产精品| 国产高清26uuu| 国产AV色黄看到爽| 校园春色之综合网| 91色伦| 国产精品 久久久精品一牛| 国产偷人妻精品一区二区在线| 亚洲欧美在线观看无码| 亚洲第一男人天堂| 新版天堂中文资源8在线| 国产小炒后入式| 欧美性爱免费短视频| 亚洲在高跟鞋自慰久久在色线| 91视频精品| 国产乱婷婷精品二区三区| 成人久久久| 中文字幕日韩人妻视频一区二区三区交换夫妻| 狠狠狠一区二区三区| 五月天社区| 校园春色 欧美| 日本一二区免费| 国产女人和拘做爰视频 | 国产精品午夜福利视频| 99久久99九九99九九九| 人人色97| 91扒丝袜综合在线| 五月天久久综合网| 后入日本1234| 青娱乐手机日韩在线视频| 大鸡巴久久久| 亚洲伊人久久精品狠狠在线| 五月婷婷六月丁香| 婷婷综合久久| 在线有码中文字幕| 亚州男人天堂| 91少妇高潮| 日日干男人的天堂| 日本青青草在线| 六月色婷婷| 色综合色色| 成人性爱电影网| 中文字幕久热视频在线| 日产操逼| 国产精品免费久久久久久久久久| 亚洲欧美碰碰| 福利大香蕉| 国产小炒后入式| 91N五十路| 亚洲情色电影网| 97久久视频| 91丝袜在线播放| 91超碰在线观看| 天天亚洲综合| 久久精9| 少妇天堂网络| 超碰国产情侣自拍网| 欧美图片偷拍| 欧洲自拍色图gif在线| 嫩草 我啊~嗯~在线| 啊啊啊水好多| 欧美一区二区三区入口| 日韩性爱高清免费视频| 校园春色之综合网| 欧美91在线+|+欧美| 九九九九九九视频| 无码高清操逼| 欧美性爱视频免费一区一A| 无码抄逼网| 污到发麻的视频 国产| 91九九九小逼| 日韩无码第3页| 日韩中文字幕国产| 人妻久热在线| 蜜臀AV午夜精品久| 免费黄色片子| 亚洲91色在线| 亚洲丝袜诱惑| 黄网在线播放| 亚洲少妇在线影音| 美女啊啊啊啊啊啊| 99精品在线| 一二三四视频在线社区中文字幕| 人人摸人人干人人拍97| 亚州91| 大香蕉一区二区在线观看.| 日本网色| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 色www精品视频在线观看| 超碰97网站| 尤物一级在线免费观看| 免费97视频| 国产精品久久久久中文字幕| 一区,二区,三区网站| 久久精品区| 欧美成人色| 91视频综合网| 精品人妻一区二区三区-国产| 亚洲乱妇p22| 99精品视频在线观看| 97精品一区二区三区免费| 99亚洲精品| 精品九九九九九九| 欧美乱色| 秋霞一级A片黄色视频| 97国伦国色| 亚洲精品性爱片| 亚洲限制级| 国模少妇一区二区三区| 天美传媒精品一区二区| 久操操| 熟女人妇一区二区三区| 国产人妻久久精品一区二区三区| 狠狠干狠狠干| 日韩操逼HD| 97操碰| 97中文字幕色| 精品区9| 91人妻素女| 亚洲九九视频| 91色黑人少妇| 五月丁香综合激情| 麻豆 欧美 日韩| 乱操乱伦AV| 日韩电影免费网站麻豆视频| 国内操逼视频二区| 亚州操操穴网| 九九热精品| 国产高清MV操逼视频| 久久婷婷成人综合色怡春院| 精品超碰色| 久热在线精品免费观看| 很很很很操| 欧美日韩色| 亚洲精品一二三四区| 无码自拍SM| 操逼视频色| 久久久精品网| 97超碰久久| 操熟女91| 激情文学亚洲| 欧美日韩天堂| 亚洲啪啪啪啪视香蕉| 精品然女一区二区| 久久一二三四不卡| 青青草导航在线视频| 370p日韩欧美亚洲精品| 国产精选视频| 久久久久久久久久久精| 国产超碰欧美| 女优大全 - 91n| 亚洲综合电影| AA特级绝黄| 精品丰满人妻一区二区三区免费观| 中文字幕成人乱码熟女精品国50 | 欧美在线色| 欧美综合色| 91人妻人人澡人人爽人人精品| 日韩综合色网| 91人人| 牛牛操视频逼| 亚洲精品三区在线观看| 亚洲四虎熟女精品| 日韩三级在线观看mp4| 后入式999| 在线视频亚洲无码| 日韩AV一区二区三区四四| 99re3这里只有精品| 国产天天骚| 中文字幕av久久爽Av| 欧亚久久偷拍视频| 久操视频这里只有精品| 素人一区二区三区日韩| 啊啊啊啊视频免费| 一本一道久久综合久久| 亚洲精品官网在线观看| 日本精品88888888| 新婚人妻扶着粗大强行坐下| 婷婷丁香五月激情啪啪| 日本一区99| 国产精品视频在线观看| 婷婷香蕉| 男人天堂欧美| 啊啊啊啊啊操我视频| 学生妹天天看| 萌白酱自拍视频| 免费成人在线熟妇网| 91久久久久久久| 婷婷五月天在线观看| 久久9亚洲| 超碰久久草| 九九九久久久| 加勒比海成人视频网| 国产Av超碰| 色老汉色| 亚洲欧洲av影音| 肥臀熟女福利视频一区二区| 亚洲欧美色图片| 99青草| 丁香五六月啪啪| 99热这里只有是精品10| 欧美日韩操逼嗦吊| 久久久久久综合久久伊人蜜月| 婷婷在线播放| 欧美激情视频在线一区| 欧美性Fer办公室秘书| 九九综合久久| 日韩字幕一区| 超碰4A| 久久色一区| 一区二区三区成人高清视频| 国产精品国产| 天天欧美色| 激情综合二| 久久久96| 日韩欧视频| 美腿丝袜高跟网免费视频免费视频| 天天搞在线综合网| 亚洲日韩国产精品| 国产中午字一暮区| 亚洲日韩熟女人妻高清在线| 日本97久久久精品| 黑丝内射一区二区三区| 手机在线视频国内精品| 婷婷爽人人婷婷爽视频| 欧美精品,四区。五区| 大鸡吧尹人在线| 九九热在线视频| 麻豆啪啪啪视频| 爱妃国产亚洲视频中文字幕| 亚洲AV永久无码精品成人调教| 久久9亚洲| 91人妻爽爽人人做人人澡| 国产av美女被艹的乱叫| 国产精品久久久久久片| 久久最新视频免费观看| 密臀AV在线| 丝袜无码a片| 伊人97色天使| 打av高清| 中文久久96| 国产精品久久久久久夜夜夜夜| 九一综合网| 久久噜| 日韩精品人妻中文字幕久久久| 亚洲精品一二三四区| 啊…啊…操我用力操我| 日韩97视频!在线| 96AV久久久| 天天看特黄的免费网站| 丝袜视频一区二区在线播放国产中文| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 色香欲综合| 一二三区操逼国产91| 91丨国产丨白浆秘 洗澡动漫| 中国操逼无码| 韩国三级理论在线| 色蜜AV| 9超碰免费| 伦在线97| 亚洲欧美不卡线| 色视频蜜乳| 国产欧美一区激情交| 日本在线一二| 亚洲欧美天| 久96热在线观看视频| 欧亚成人| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 日本精品一级二级三级| 国产做?爰片久久毛片?片美国| 国产刺激视频| 欧美图片校园春色| 噜噜噜在线视频| 色婷婷电影网| 乱久久久| se吧提供91精品国产91久久久久久 | 91GD.COM| 啊灬啊灬啊灬啊灬高潮奶出了免费视| 校园春色综合网| 日韩精品中文字幕二区| 欧美激情视频一区二区三区不卡| 欧美玖玖爱免费玖玖| 少妇综合网| www.99在线| 日本国产二线女色| 人人摸人人干人人拍97| 国产极品久久久| 久草在线| 国产欧美一区二区| 亚洲成人黄色在线观看| 超碰久久草| 色在线亚洲视频www| 精品亚州18| 亚洲精美粉嫩嫩泬在线观看 | 97超碰精品图片| 美日韩成人| 97欧美日韩| 精品一区二区啪啪啪| 九九九999久久久网站| 91精品久久久久久综合五月天| 日本精品加勒比海一区| 国产欧美伊人| 成人一级性爱| 欧美色图第一页| 日韩乱码Av| 成人小说另类在线| 精人妻无码一区二区三区伊人直播| 亚洲国产成人福利在线观看| 加勒比综合88| 日韩综合97P| 五月丁香综合啪啪| 天天做天天爱夜夜爽毛片试看| 天天综合网1| 国产高清成人传媒影视| 亚洲 欧美 色图| h色99999| 国产超碰在线一区| 欧美黄片欧美黄片xxx| 欧美96在线|欧| 九九九九九九九九九五码| 看日韩操逼| 国产最新小视频在线播放下载 | 91在线秘 男同| 国产精品96久久久久久| 九九九成人| AV99热18这里只有精品| 插入综合网| 久久高清欧美国产| 久操凹凸视频| 新婚人妻扶着粗大强行坐下| 天天操天天射天天日| 亚洲欧美国产va在线播放频| 亚欧操逼片在线观看 | 久久亚洲一区女同性恋中文字幕| 啊啊啊快操我视频| 丝袜无码a片| 超碰在线974| 97人亚洲综合字幕| 9超碰免费| 精品夜夜澡人妻无码| 尹人大香蕉视频在线| 性爱乱伦一区| 狠狠色综合网| 日本 欧美 亚中文字幕| 久久久精品日本一道| 99色色网| 久久久久久久久久久97| 麻豆 欧美 日韩| 亚洲天堂东京热| 99re这里只有精品3| 欧美 亚洲 另类 综合| 日韩色图 一区二区| 天天射天天色成人| 国产99999| 国产精品久久aV| 91在线超高颜值国产| 午夜精品视频777| 小草精彩毛片| 九九九九九九九九九五码| 日韩欧美中文字| 久久久久白虎| 操逼天美3区| 青青草日韩无码| 色欧美色交综合| 久久午夜鲁丝片| 强奸乱伦日韩AV| 超碰调教97| 精彩久久中文| 国产白丝精品在线观看| 国产最新小视频在线播放下载| 97国产高清视频在线观看| 99热婷婷| 欧美啪啪啪91| 91人妻尻屄视频| 欧美视频激情久久久久久| 凹凸 69堂 在线播放| 国语国产操逼伊人AV网| 熟女一区二区| 亚洲男人天堂网站| 欧美成人性爱视频大全| 日韩中文字幕宗合在线| 亚洲性爱免费电影| 人妻内射一区二区在线视频| 精品国模无码| 国语人妻精彩刺激| dy888午夜老子影视达达兔| 国产高潮AA片免费看| 肉丝中文无码高清| 老司机天天操| 大香网伊人久久综合网eew| 亚洲欧美黄| 超碰三级秋霞| 国产曰批免费观看久久久| 国产亚洲色婷婷99精品91| 小说区 图片区色 综合区| 精品国产一区二区三区av在线资源| 亚91网| 熟女人妻久久中文字幕一二区| 九九九久久久| 东北操逼| 人人乐大香蕉| 久久久久亚洲熟妇熟女| 精品中文一区二区| 欧美色偷拍| 免费日韩黄片| 抽插一区二区视频| caorenqi shipin| 精品日韩中文在线| 久久婷婷成人综合色怡春院| 亚洲成人一二三区| 国产强上视频在线观看| 欧美色图第一页| 91欧美巨乳| 亚州伊人色综台| 欧美性巨大╳╳╳╳╳高跟鞋| 日韩兔费看黄片| 国产精品69久久久久久久| 欧美久久九九| 在线日韩视频| 去干网最新版| 91小视频| 偷拍自拍在线视频观看| 亚洲无线观看久久| 97亚洲在线| 密臀在线视频| 亚洲天堂少妇| 一摸二插三插| 97超碰在线资源网站| 久超碰在| 欧美视频在线第3页| 综合一区中亚洲国产成人综合精品| 玖草在线视频| 欧美亚洲特P| 天天影视之亚洲综合网| 无码操逼天堂| 久久久九九| 香港日本韩国人妇99www.wccm20| 九九热精品| 久久性视频| 人人妻人人狠人人| 欧美在线干| 日韩一区二区三区四区五区 | 中国一级操逼视频| 人妻一二三区| 久久久麻豆精品| 亚洲精品日日夜夜52| 操逼视频亚洲| www.超碰在线| 粉嫩国产精品久久久| 亚洲 图片 综合91| 素颜老阿姨乱情色| 亚洲男人综合网| 久久久无码精品人妻二区| 变态另类专区| 青草草免费网站av| 久久国产999| 老鸭窝日丰县女人| 人人操人人肉久久精品| 国产无码久久高清| 熟女五十路一区二区三| 人人摸人人干人人拍97| 激情五月天视频| 白 大 人妻 区 在线| 97精品视频在线播放| 人妻夜夜爽天天爽三区麻豆AV网站| 玖玖爱在线视频免费观看| 亚洲色图欧美色图日韩色图| 久久艹逼视频| 成年人网站在线免费观看| av网站在线观看了| 亚洲九九视频在线观看| 欧美三级中文字幕hd| 亚洲性少妇| 国产大学生高潮在线播放| 啊啊啊久久| 青青草久久一区网| 一区二区视频在线播放| 暴力av在线| 精品免费1| 亚洲无码免费看| 国产精品一区二区三区四区五区| 亚洲情色一区综合| 在线看片国产精品每日更新| 九九久久久| 99国产精品免费| 久久激情五月| 日韩亚洲精品一区二区| 欧美性天天| 超碰综合97在线| 中文字幕加勒比海高清无码免费视频| 人人干人人操人人..com| 久久线上视频免费看| 亚洲和欧美裸体美女双飞视频| 玖玖婷婷五月天| 国产亚洲日韩欧| 91欧美经典| nuu12国产麻豆精品| 国产丰满少妇久久久精品影院| 欧美成人性爱视频大全| 尹人免费观看视频在线| 精品国产乱码久久久久久蜜臀| 超碰人人干| 日韩AV无码中文一区二区| 在线午夜成人无码视频| 国产农村妇女毛片精品久久| 亚洲限制级| 精品黑人一区二区| 日韩午夜精品一区二区三区电影| 成人av毛片在线观看| 亚洲Av诱惑| 视频在线97| 色www精品视频在线观看| 啊好大好舒服| 欧美久久草熟女| 午夜久久一区二区无码中出| 四虎影库国产精品免费| 久久久精品日本一道| 国产精品交换一区二区| 国产色精品午夜大片| 超碰成人公开| 6080YYY午夜理论片在线观看| 婷婷丁香激情| 国产91 丝袜在线播放00-百度| 大香蕉99999| 风间由美日韩欧美久久| 啊啊啊啊,啊啊好多水| 亚洲在钱| 干b网| 秋霞福利网| 91精品国产乱码| 风月影院男女十八禁| 四虎影库国产精品免费| 啊啊啊97视频| 国产精品视频播放| 很很很很操| 一二三四视频在线社区中文字幕| 操逼999| AV色五月天| 亚洲精品久久一区二区三区蜜桃臀| 国产乱码久久久久久| 色欧美色交综合| 亚洲情色 自拍| 少妇色欲综合网2| 亚洲91色| 97在线播放| 亚州性色| AV色女综合| 亚洲无码超碰免费| 亚洲天堂AV在线播放| 婷婷视频在线免费观看| 国模精品娜娜一二三区| 嗯啊啊啊轻点视频 | 国产中出内射一区二区| 亚洲成人激情小说视频| 少妇干B| 久久丁香五月婷婷| 99久久这里只有精品| 久久只有精品一区二区三区| 欧美性五月| 国产91 丝袜在线播放00-百度| 无码精品久久久久久亚洲| 免费观看网黄| 五月综合婷婷久久网站| 伊人天堂在线| 97干com| 97超碰中文字幕| 香蕉大久久久| 欧美 亚洲 第一页| 在线岛| 九九99精品| 国产第二页| 91亚洲色人| 视频分类 国内精品| 天美传媒国产原创中文字幕亚洲欧美另类 | 国产精品色| 天天插天天操天天摸天天射天天看| 精品二区久久| 亚洲 小说 欧美 激情 另类| 一级久久性爱视频| 1204金沙人妻懂旧版免费| 久久线上视频免费看| 老子午夜伦不卡影院| 五月丁香色情| 粉嫩av一区二区三区四季| 91美女视频在线观看| 人妻少妇被猛烈进入中| 日韩欧美亚洲国产日韩| 四虎av在线| 免费一级黄色录像影片| 欧美性猛交美女自慰91| 色情婷婷久久五月天| 操婢日韩| 久久久久久久久久久97| 91在线一起| 老熟女乱伦片| 天天透伊人| 天天影视91看看| av无码精品久久久久| 啊啊啊好爽快点啊啊啊嗯嗯| 人妖欧美一区二区| 色欲无码人妻日韩欧美精品| 91亚洲不卡一区| 夜夜免费视频| 久久久久久久九九九九九九| 五月天婷婷欧美三区| 超碰欧美COM| 九九综合久久| 在线电影亚洲色图| www.伪伪| 久久精品老司| 日熟女| 中文字幕片| 超碰95| 亚洲第一综合| 久草加勒比一区在线| 中文字幕精品区先锋资源| 96国产污污污丝袜| 亚洲国产精品99久久久| 强上我不卡卡| 搡老女人老熟女91老熟女综合网| 九九色热| 亚洲欧洲日韩中文字幕一区| 国产精品99久久久www| 熟女一区二区三区| 青青免费在线视频一区 | 清纯唯美亚洲另类| 婷婷丁香五月综合| 舔足天天操天天射| 熟妇人妻精品一区二区| 久久98| 91情色| 射丝袜高跟鞋99| 超碰97人妻免费在线| 大香蕉在线视频重口味毛片在线| 色欲天天婬色婬香WWW夜色| 蜜臀亚洲中文| 天天激情综合站| 人人妻天天做天天爽| 日韩性爱小视频在线观看| 九一国产精品| 丁香九月激情| 久久草草亚洲蜜桃臀| 四虎视频在线观看| 综合欧美激情网| 欧美91色| 伊人综合色网| 无码外流操逼视频| 色麻豆AV| 五月天婷婷小说| 97碰| 色网1| 麻豆天美电影一区二区| а√天堂资源官网在线资源| 60秒免费小视频| 99色视频| 黄色香蕉视频网站一区| 97内射偷拍| 国产精点久久久成人| 欧美色网络| 躁躁日曰躁2020| 婷婷丁香在线| 午夜性生活av免费在线看| 亚洲影视综合网| 韩国一级婬片A片无码天美| 久久久久久无码人妻中文字幕| 天天色综合图片| 一类av片在线看| 欧美天天影院| 殴美牲| 欧美性爱伊人| 一区二区三区国产在线播放| 18禁久极品美女久久哦哟呀!| 天天插天天插| 天天操人人操狠狠插| 精品视频一区二区| 香蕉一区二区三区在线视频| 人妻人人做人人澡人人爽欧美一区| 久久超碰网| 久久九九精品一区二区| 欧美制服网站美腿丝袜| 国产女生在线| 久久精品 六十路 熟女 欧美| 哑洲在线| 嗯嗯嗯,草死我| 色综合99| 成人无码影片视频在线| 人人看黄色视频| 欧美姓爱综合网| 啊啊啊啊啊好舒服视频| 亚洲中文人妻色| 青青国产精品在线| 色人久久| 人人看欧美性爱| 欧美日综合| 久久精品无码熟妇一区二区三区视频导航| 亚洲情色婷婷五月天| 色婷婷丁香| 日韩AV熟女乱伦| 精品国产一区二区三区四区在线看| 日韩黄色一区二区三区| 久久综合九色综合欧洲98| 国产夫妻性生活视频| 99国内熟女露脸视频| 91丝袜美女| 91在线色综合| 污啪啪啪视频| 人妻人人操| 国产欧美日韩精品中文| 久久6热视频免费观看| 巨爆乳一区二区爆乳区| 欧美日韩国产成人高清| 中日韩一区二区三区欧美| 欧美 亚洲| 99超碰碰| 日本新免费二区三区| 日韩操呦呦影院在线观看| 色91综合网| 欧美少妇一区二区三区| 熟妇亚洲一区二区三区| 四虎永久在线精品免费网址| 91黑丝在线播放| 国产av高清版| 欧美色偷拍 | 久久动漫精品视频这里只有精品| 亚洲丝袜天堂| 四虎AV无码| 国产av热热色| 麻豆精品三区视频| 啊啊啊啊啊啊啊在线| 丰满熟女人妻一区二区三五十一路| 久操影视| 青草伊人久久| 美女91在线| 欧美亚洲中文| 精品国产av一区二区三区四区入口| 波多野42部激情无码喷潮| 2025年A片视频精品| 国产精品久久久吖| 成人八戒网站| 欧美刺激色黄片免费看| 静品嫩模一区二区| 91在线|亚| 日韩/97| 日韩操呦呦影院在线观看| www.acm成人黄色毛片| 精品少妇高潮久久| 大香蕉淫人| 操逼日批| AV免费在线播放一区| AV综合中文字幕干| 很黄很污的免费网站| 久久超碰98| 99视频自拍区| 一级片视频啪啪| 欧美性爱中文字幕无线码| 人妻乱仑一区二区三区| 女人爽到高潮久久久| 欧美se亚洲| 欧美在线干| 偷拍 欧美 日韩| 亚洲中文日韩欧美大香蕉视频| 果冻国产精品麻豆成人av| 青青操青娱乐| 情色五月天网| 久草看看看| 一区操逼| 久9视频| 超碰在线974| 精品熟妇视频一区二区| 国产 日韩,欧美 自拍| 色综合一本| 国产久久久久久久久一区二区| 在线观看AV不卡| 欧亚第一综合网| 日韩情色一区二区| av强奸乱轮| 欧美日韩操逼嗦吊| 中文字幕视频在线观看一区二区| 一区二区视频你懂的| 欧美色图第一页| 欧美色视频在线| 五月天激情小说| 97国产精品久久久久| 极品国产内射| 在线日韩视频| 久久久一区二区| 国产精品ⅴ无码大片在线看.| 大香蕉97久久| 蜜桃色院一区久久 | 国内毛片四区| 国精精品无码一二三区水多多| 北条麻妃99精品青青久久| 日本在线伊人啪啪| 郑州宾馆老熟女露脸啪啪| 欲色影视综合吧| 美女性91| 免费黄色A片| 亚洲性综合| 人人看人人插| 十八禁啪啦拍视频无遮挡| 亚洲精品一卡二卡三卡福利视频网站| 999999精品| 亚洲无套久久嗯嗯| 亚洲春色欧美| 国产亚洲日本精品在线| 国产SV一线| 97色碰| 91久久久久免| 精品亚洲天堂| 婷婷五月天社区| 中国小夫妻勾搭露脸淫荡对白| 蜜乳成人AV| 91是天天| 国产精品爆乳懂色蜜乳| 在线观看一卡二卡| 大香蕉草草| 人妻少妇视频在线播放| 九九九成人| 粉嫩av在线一区二区| AV老汉| 日韩一区二区精彩视频| 91暧暧| 超碰97中文| 欧美嫩性色| 淫荡网址| 91美乳| 国产精品4p在线观看| 综合网,亚洲,欧美| 欧洲精品一级二级精品综合视频综合 | 无码高清专| 啊啊啊啊啊啊啊啊啊在线观看| 尤物视频视频官网| 强上我不卡卡| 国产AAAAAABBBBB| 欧美大香蕉97| 中文字幕一区二区三区字幕| 操曰本熟女| 777奇米影视777四色| 超碰久超碰久| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 天美麻豆一区二区三区| 一起草av| 亚洲AV无码乱码| 嗯嗯啊好大| 岛国艾薇凹凸视频天堂| 欧美成人精品欧美一级乱黄一区二…| 啊啊啊男女| 亚洲熟女国产综合另类| 成年人网站在线免费观看| 97视频620| 日本在线视频导航| 亚洲se91| 亚洲Av噜噜一区二区三区妖精| 超97在线精品视频| 久草精品一区| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 天天α片| 尤物一级在线免费观看| 亚洲资源吧| 96免费视频在线| 免费看久久久性性| 内射夫妻三片| 蜜桃精品一区二区三区久在线| 密乳无码| 97综合在线| 中文字幕日韩人妻视频一区二区三区交换夫妻| 俺去俺来也在线www| 欧美综合网在线| 色综合中文字幕不卡| 欧美日韩性爱操大逼| 亚洲全色网| 国内97干免费看| www五月| 人人操人人搞人人草| 日本 情色 1区| 经典丝袜一区| 69超碰综合| 乱伦一二三区| 日本大香蕉综合网| 亚洲精品蜜桃久久久久久久| 欧美综合站| h无码动漫在线观看| 中文AV制服乱伦| 破处bbq| 婷婷色综合| 一级特级aaaa毛片免费观看 | 97超碰美女| 欧美色图中文字幕| AV 少妇 人妻 偷拍| 国产宅男宅女在线观看| 伊人国产成人av网站| 日本不卡一区二区三区| 日产中文字幕2020| 婷婷精品| 强奸乱伦亚洲第一页| 91免费看一区二区三区| 无码二级三级| 夜夜骑日日| 久久精品老司| 中文字幕乱码人妻一区二区三区,99精品 | 国产午夜在线观看| 麻豆熟妇乱妇熟色A片在线看| 亚州色图片在线色| 夜夜嗨av午夜成人| 五月天激情四射| 玖玖爱免费观看视频| 久久久久亚洲三级电影| 玖玖爱在线视频免费观看| 九九九国产| 超碰久久.com| 天操天操夜操夜月月年年操操| 91麻豆一二三区| 色爱欲亚洲| 91伊人大香蕉| 伊人青青一区成人视频在线观看区| 国产久久视频| 天天欲望网| 日韩午夜国产| 最新精品久久蜜桃 | 边做饭边操逼逼| 亚洲日本天堂| 激情婷婷丁香| 九九九草| 变态另类专区| 蜜区区视频79 | 久草男人天堂| 人人操人人射人人干| 日韩精品操少妇| 九九热男人天堂| 操B久久| 绯色AV粉色AV蜜臀AV| 媚薬在线视频麻豆|