AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

面試官:SpringBoot如何優雅停機?

來源: 責編: 時間:2024-03-18 17:40:34 196觀看
導讀優雅停機(Graceful Shutdown)是指在服務器需要關閉或重啟時,能夠先處理完當前正在進行的請求,然后再停止服務的操作。優雅停機的實現步驟主要分為以下幾步:停止接收新的請求:首先,系統會停止接受新的請求,這樣就不會有新的任

優雅停機(Graceful Shutdown)是指在服務器需要關閉或重啟時,能夠先處理完當前正在進行的請求,然后再停止服務的操作。oQ128資訊網——每日最新資訊28at.com

優雅停機的實現步驟主要分為以下幾步:oQ128資訊網——每日最新資訊28at.com

  1. 停止接收新的請求:首先,系統會停止接受新的請求,這樣就不會有新的任務被添加到任務隊列中。
  2. 處理當前請求:系統會繼續處理當前已經在處理中的請求,確保這些請求能夠正常完成。這通常涉及到等待正在執行的任務完成,如處理HTTP請求、數據庫操作等。
  3. 釋放資源:在請求處理完成后,系統會釋放所有已分配的資源,如關閉數據庫連接、斷開網絡連接等。
  4. 關閉服務:最后,當所有請求都處理完畢且資源都已釋放后,系統會安全地關閉服務。

0.SpringBoot如何實現優雅停機?

優雅停機的實現步驟分為以下兩步:oQ128資訊網——每日最新資訊28at.com

  1. 使用合理的 kill 命令,給 Spring Boot 項目發送優雅停機指令。
  2. 開啟 Spring Boot 優雅停機/自定義 Spring Boot 優雅停機的實現。

1.合理殺死進程

在 Linux 中 kill 殺死進程的常用命令有以下這些:oQ128資訊網——每日最新資訊28at.com

  1. kill -2 pid:向指定 pid 發送 SIGINT 中斷信號,等同于 ctrl+c。也就說,不僅當前進程會收到該信號,而且它的子進程也會收到終止的命令。
  2. kill -9 pid:向指定 pid 發送 SIGKILL 立即終止信號。程序不能捕獲該信號,最粗暴最快速結束程序的方法。
  3. kill -15 pid:向指定 pid 發送 SIGTERM 終止信號。信號會被當前進程接收到,但它的子進程不會收到,如果當前進程被 kill 掉,它的的子進程的父進程將變成 init 進程 (init 進程是那個 pid 為 1 的進程)。
  4. kill pid:等同于 kill 15 pid。

因此,在以上命令中,我們不能使用“kill -9”來殺死進程,使用“kill”殺死進程即可。oQ128資訊網——每日最新資訊28at.com

2.設置SpringBoot優雅停機

在 Spring Boot 2.3.0 之后,可以通過配置設置開啟 Spring Boot 的優雅停機功能,如下所示:oQ128資訊網——每日最新資訊28at.com

# 開啟優雅停機,默認值:immediate 為立即關閉server.shutdown=graceful# 設置緩沖期,最大等待時間,默認:30秒spring.lifecycle.timeout-per-shutdown-phase=60s

此時,應用在關閉時,Web 服務器將不再接受新請求,并等待正在進行的請求完成的緩沖時間。oQ128資訊網——每日最新資訊28at.com

然而,如果是 Spring Boot 2.3.0 之前,就需要自行擴展(線程池)來實現優雅停機了。它的核心實現實現是在系統關閉時會調用 ShutdownHook,然后在 ShutdownHook 中阻塞 Web 容器的線程池,直到所有請求都處理完畢再關閉程序,這樣就實現自定義優雅線下了。oQ128資訊網——每日最新資訊28at.com

但是,不同的 Web 容器(Tomcat、Jetty、Undertow)有不同的自定義優雅停機的方法,以 Tomcat 為例,它的自定義優雅停機實現如下。oQ128資訊網——每日最新資訊28at.com

2.1 Tomcat 容器關閉代碼

public class TomcatGracefulShutdown implements TomcatConnectorCustomizer, ApplicationListener<ContextClosedEvent> {    private volatile Connector connector;    public void customize(Connector connector) {        this.connector = connector;    }    public void onApplicationEvent(ContextClosedEvent contextClosedEvent) {        this.connector.pause();        Executor executor = this.connector.getProtocolHandler().getExecutor();        if (executor instanceof ThreadPoolExecutor) {            try {                log.info("Start to shutdown tomcat thread pool");                ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) executor;                threadPoolExecutor.shutdown();                if (!threadPoolExecutor.awaitTermination(20, TimeUnit.SECONDS)) {                    log.warn("Tomcat thread pool did not shutdown gracefully within 20 seconds. ");                }            } catch (InterruptedException e) {                log.warn("Fail to shut down tomcat thread pool ", e);            }        }    }}

2.2 設置 Tomcat 自動裝配

@Configuration@ConditionalOnClass({Servlet.class, Tomcat.class})public static class TomcatConfiguration {    @Bean    public TomcatGracefulShutdown tomcatGracefulShutdown() {        return new TomcatGracefulShutdown();    }    @Bean    public EmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory(TomcatGracefulShutdown gracefulShutdown) {        TomcatEmbeddedServletContainerFactory tomcatFactory = new TomcatEmbeddedServletContainerFactory();        tomcatFactory.addConnectorCustomizers(gracefulShutdown);        return tomcatFactory;    }}

oQ128資訊網——每日最新資訊28at.com

PS:Jetty、Undertow 優雅停機的實現方式,參考《面試訓練營》,vx:gg_stoneoQ128資訊網——每日最新資訊28at.com

課后思考

Spring Boot Actuator 能實現優雅停機嗎?為什么?如何實現分布式系統的優雅停機?oQ128資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-77522-0.html面試官:SpringBoot如何優雅停機?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 編程語言3月榜單:Python第一C++排第三,昔日王者第四預示互聯網時代結束

下一篇: Java中的鎖升級機制:偏向鎖、輕量級鎖和重量級鎖

標簽:
  • 熱門焦點
  • 直屏旗艦來了 iQOO 12和K70 Pro同臺競技

    旗艦機基本上使用的都是雙曲面屏幕,這就讓很多喜歡直屏的愛好者在苦等一款直屏旗艦,這次,你們等到了。據博主數碼閑聊站帶來的最新爆料稱,Redmi下代旗艦K70 Pro和iQOO 12兩款手
  • 從零到英雄:高并發與性能優化的神奇之旅

    作者 | 波哥審校 | 重樓作為公司的架構師或者程序員,你是否曾經為公司的系統在面對高并發和性能瓶頸時感到手足無措或者焦頭爛額呢?筆者在出道那會為此是吃盡了苦頭的,不過也得
  • 2023年,我眼中的字節跳動

    此時此刻(2023年7月),字節跳動從未上市,也從未公布過任何官方的上市計劃;但是這并不妨礙它成為中國最受關注的互聯網公司之一。從2016-17年的抖音強勢崛起,到2018年的&ldquo;頭騰
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯網企業調整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 華為和江淮汽車合作開發百萬元問界MPV?雙方回應來了

    8月1日消息,郭明錤今天在社交平臺發文稱,華為正在和江淮汽車合作,開發售價在100萬元的問界MPV,預計在2024年第2季度量產,銷量目標為上市首年交付5萬輛。
  • AMD的AI芯片轉單給三星可能性不大 與臺積電已合作至2nm制程

    據 DIGITIMES 消息,英偉達 AI GPU 出貨逐季飆升,接下來 AMD MI 300 系列將在第 4 季底量產。而半導體業內人士表示,近日傳出 AMD 的 AI 芯片將轉單給
  • 滴滴違法違規被罰80.26億 共存在16項違法事實

    滴滴違法違規被罰80.26億 存在16項違法事實開始于2121年7月,歷經一年時間,網絡安全審查辦公室對“滴滴出行”網絡安全審查終于有了一個暫時的結束。據“網信
  • 聯想YOGA 16s 2022筆記本將要推出,屏幕支持觸控功能

    聯想此前宣布,將于11月2日19:30召開聯想秋季輕薄新品發布會,推出聯想 YOGA 16s 2022 筆記本等新品。官方稱,YOGA 16s 2022 筆記本將搭載 16 英寸屏幕,并且是一
  • Meta盲目擴張致超萬人被裁,重金押注元宇宙而前景未明

    圖片來源:圖蟲創意日前,Meta創始人兼CEO 馬克&middot;扎克伯發布公開信,宣布Meta計劃裁員超11000人,占其員工總數13%。他公開承認了自己的預判失誤:&ldquo;不僅
Top