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

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

關于Java程序服務預熱那些事

來源: 責編: 時間:2024-03-18 09:38:20 178觀看
導讀一、背景1.1 什么是服務預熱所謂服務預熱,就是在服務啟動完成到對外提供服務之前,針對特定場景提供一些初始化準備操作。比如線程池預熱、緩存預熱、數據庫預熱、web預熱和JVM預熱等。1.2 為什么要預熱因為服務剛啟動的

一、背景

1.1 什么是服務預熱

所謂服務預熱,就是在服務啟動完成到對外提供服務之前,針對特定場景提供一些初始化準備操作。9DF28資訊網——每日最新資訊28at.com

比如線程池預熱、緩存預熱、數據庫預熱、web預熱和JVM預熱等。9DF28資訊網——每日最新資訊28at.com

1.2 為什么要預熱

因為服務剛啟動的時候需要一段磨合期,這段期間,服務運行狀態沒有達到最佳。因此,如果這時候一下子將服務流量提升到正常水平,就有可能導致大量請求超時或者瞬間將系統壓垮。9DF28資訊網——每日最新資訊28at.com

針對 Web 應用的場景,將Java程序啟動分為兩個過程:9DF28資訊網——每日最新資訊28at.com

1、啟動過程:是指從JVM 啟動到程序初始化完成能響應第一個請求的階段。由于啟動時需要動態類加載和程序啟動時的初始化,導致啟動會比較慢。啟動慢會影響程序的響應度,減慢 Web 應用擴容。9DF28資訊網——每日最新資訊28at.com

2、預熱過程:是指從JVM 啟動到程序優化完成、達到性能峰值的階段。預熱慢會導致 Web 應用無法及時的處理完用戶請求,造成大量請求超時。9DF28資訊網——每日最新資訊28at.com

圖片圖片9DF28資訊網——每日最新資訊28at.com

二、如何預熱

2.1 預熱緩存

a.連接池預熱

和數據庫連接池一樣,我們可以在應用啟動時,根據需要初始化若干連接放入連接池,從而避免請求過來的時候再創建而影響性能。9DF28資訊網——每日最新資訊28at.com

系統啟動時,嘗試獲取若干連接(這里取最小閑置),此時連接池為空,生成連接后會放入連接池,等請求進來的時候就不會再去創建連接了。9DF28資訊網——每日最新資訊28at.com

圖片圖片9DF28資訊網——每日最新資訊28at.com

b.熱點數據預熱

  • 數據存到redis中

處理方案:9DF28資訊網——每日最新資訊28at.com

1、配置一個定時任務,刷新緩存數據。9DF28資訊網——每日最新資訊28at.com

2、直接寫個緩存刷新頁面,上線后手動刷新。9DF28資訊網——每日最新資訊28at.com

  • 數據存到本地

對于一些訪問度特別高的熱點數據,在極端情況下,考慮到服務到redis有網絡延遲以及序列化和反序列化消耗,所以放入redis緩存是不太理想的。9DF28資訊網——每日最新資訊28at.com

那么對于這些數據我們可以考慮放入本地緩存,當然這些數據量不能太大。對于極端的熱點數據放入本地緩存后,請求獲取數據在應用維度基本沒有任何消耗,沒有網絡延遲也沒有序列化和反序列化消耗。9DF28資訊網——每日最新資訊28at.com

可以使用guava 的cache9DF28資訊網——每日最新資訊28at.com

2.2 預熱線程池

1)請求接收線程池

以tomcat為例,我們可以配置初始化創建線程的數量來做線程池預熱。9DF28資訊網——每日最新資訊28at.com

圖片9DF28資訊網——每日最新資訊28at.com

2)自定義線程池

對于自定義線程池,初始化時候調用prestartAllCoreThreads方法即可。9DF28資訊網——每日最新資訊28at.com

圖片9DF28資訊網——每日最新資訊28at.com

3)預熱DB連接池

服務啟動時根據需要創建若干數據庫連接,放到連接池中,然后應用啟動處理數據庫讀寫請求時,可以直接從連接池中拿連接來用,避免了讀寫請求創建連接并放入連接池的流程耗時。9DF28資訊網——每日最新資訊28at.com

我們常用的連接池Druid提供了比較方便的連接池預熱能力。常見的配置方式:9DF28資訊網——每日最新資訊28at.com

圖片9DF28資訊網——每日最新資訊28at.com

4)JVM預熱

大家都知道,Java語言是解釋執行和編譯執行共同存在的。即Java源代碼文件(.java)首先由Javac編譯為字節碼(.class),然后字節碼由各操作系統對應的虛擬機解釋或編譯執行。9DF28資訊網——每日最新資訊28at.com

為了提高執行速度,引入了JIT(Just-in-time compilation)。在運行時,JIT會把編譯過來的機器碼保存起來,以便下次使用。JIT只會對經常執行的熱點代碼進行編譯,如循環,高頻度使用的方法等。9DF28資訊網——每日最新資訊28at.com

JVM默認開啟JIT編譯,可以檢查啟動參數-Xint和-Djava.compiler=NONE,如果有說明關閉了JIT,根據需要可以移除重新開啟JIT。9DF28資訊網——每日最新資訊28at.com

此外,JDK1.8引入了Lambda表達式,給開發人員帶來了很多方便,但是過度的使用Lambda表達式也會帶來負面效果。lambda表達式的原理是在執行時生成匿名內部類,并且需要加載和編譯。9DF28資訊網——每日最新資訊28at.com

所以對于一些熱點代碼可以選擇不使用Lambda表達式,或者在服務啟動時進行預調用,經過充分的調用之后使其成為熱點代碼,后續的調用就會走JIT編譯,就會跳過生成匿名內部類、加載的步驟,也就提升了執行效率。9DF28資訊網——每日最新資訊28at.com

三、預熱的問題及解決

3.1 時長

既然在服務啟動階段加入了預熱邏輯,就會產生損耗,最直接的體現就是服務啟動時間變長,可能幾分鐘到十幾分鐘不等。9DF28資訊網——每日最新資訊28at.com

但啟動慢不一定就是壞事,相當于是在對外提供服務之前做了充足的初始化以及預熱準備。9DF28資訊網——每日最新資訊28at.com

當然事情都有兩面性,關鍵的是要在啟動快與慢之間找到一個平衡點,在保證服務能夠在可接受的時間內啟動,并且上線之后短時間內就能提供高質量的服務。9DF28資訊網——每日最新資訊28at.com

3.2 CPU升高

在實際應用過程中,遇到了CPU突增的情況。如下圖,服務在啟動時會收到CPU報警,查看監控發現CPU使用率是平時的2倍以上。9DF28資訊網——每日最新資訊28at.com

圖片圖片9DF28資訊網——每日最新資訊28at.com

查看啟動時的預熱代碼,發現會觸發下面的請求,如圖,請求量是平時正常水平的幾百倍。因此定位應該是預熱代碼的問題。9DF28資訊網——每日最新資訊28at.com

圖片圖片9DF28資訊網——每日最新資訊28at.com

預熱代碼如下:9DF28資訊網——每日最新資訊28at.com

圖片圖片9DF28資訊網——每日最新資訊28at.com

圖片圖片9DF28資訊網——每日最新資訊28at.com

上述代碼使用CountDownLatch作為計數器,在服務啟動時,觸發三個熱點接口,以達到預熱的目的。但是由于參數過多導致服務的請求激增,引發報警。9DF28資訊網——每日最新資訊28at.com

問題定位之后,我們降低了入參數量,減少了循環次數,從而減少了服務自請求次數,問題得以修復。9DF28資訊網——每日最新資訊28at.com

四、總結

以上是服務預熱的一些常見方式,服務預熱是把雙刃劍,在使用之前,需要搞清楚哪些服務需要預熱。對于需要預熱的服務,需要搞清楚具體需要預熱哪些內容,不能盲目預熱,容易適得其反。9DF28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-76493-0.html關于Java程序服務預熱那些事

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

上一篇: 我應該使用按鈕還是鏈接

下一篇: RabbitMQ代碼篇之過期時間,死信隊列,延遲隊列,優先級隊列的基本使用

標簽:
  • 熱門焦點
  • 三言兩語說透設計模式的藝術-單例模式

    寫在前面單例模式是一種常用的軟件設計模式,它所創建的對象只有一個實例,且該實例易于被外界訪問。單例對象由于只有一個實例,所以它可以方便地被系統中的其他對象共享,從而減少
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數據的地方,是數據源的一種,比如大家經常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數據,它既可以保
  • 拼多多APP上線本地生活入口,群雄逐鹿萬億市場

    Tech星球(微信ID:tech618)文 | 陳橋輝 Tech星球獨家獲悉,拼多多在其APP內上線了“本地生活”入口,位置較深,位于首頁的“充值中心”內,目前主要售賣美食相關的
  • 自律,給不了Keep自由!

    來源 | 互聯網品牌官作者 | 李大為編排 | 又耳 審核 | 谷曉輝自律能不能給用戶自由暫時不好說,但大概率不能給Keep自由。近日,全球最大的在線健身平臺Keep正式登陸港交所,努力
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的“征求意見版”:1、取消P序列
  • 小米汽車電池信息疑似曝光:容量101kWh,支持800V高壓快充

    7月14日消息,今日一名博主在社交媒體發布了一張疑似小米汽車電池信息的照片,顯示該電池包正是寧德時代麒麟電池,容量為101kWh,電壓為726.7V,可以預測小
  • 網傳小米汽車開始篩選交付中心 建筑面積不低于3000平方米

    7月7日消息,近日有微博網友@長三角行健者爆料稱,據經銷商集團反饋,小米汽車目前已經開始了交付中心的篩選工作,要求候選場地至少有120個車位,建筑不能低
  • iQOO 11S評測:行業唯一的200W標準版旗艦

    【Techweb評測】去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,該機不僅全球首發2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競
  • 由于成本持續增加,筆記本產品價格預計將明顯上漲

    根據知情人士透露,由于材料、物流等成本持續增加,筆記本產品價格預計將在2021年下半年有明顯上漲。進入6月下旬以來,全球半導體芯片缺貨情況加劇,顯卡、處理器
Top