国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

一次服務啟動慢問題排查

這篇具有很好參考價值的文章主要介紹了一次服務啟動慢問題排查。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

隨著時間推移,參與開發(fā)的人員越來越多,項目代碼也會越來越復雜,需要我們有意識的定期對代碼進行優(yōu)化,有問題及時解決,避免技術債務越積越多。
這不本人就遇到一個服務啟動慢的問題,印象中服務啟動是比較快的,一般也就20幾秒,但這次開發(fā)一個需求發(fā)現(xiàn)服務啟動要接近1分鐘,這對本地開發(fā)調(diào)試,測試同學測試都是非常不方便的,影響工作效率。

啟動服務后觀察日志,發(fā)現(xiàn)在最后一行這里卡了好久,但沒有更有幫助的日志信息打印正在做什么。從圖看起來像是xxl job的問題,但這是很早就引入了的,以前啟動并不會慢,通過打斷點也可以看出xxl job的初始化并沒有阻塞。

一次服務啟動慢問題排查

一般服務啟動慢原因主要有:
1.程序太大了,加載的bean非常多,默認情況下spring沒有使用異步加載,如果bean太多可能導致啟動慢。
2.在啟動時做一些業(yè)務初始化,如使用@PostConstruct,在方法內(nèi)進行接口調(diào)用,數(shù)據(jù)庫查詢等IO操作,可能導致服務啟動慢。
3.在啟動時做一些框架初始化,如使用數(shù)據(jù)庫orm框架,通常需要加載數(shù)據(jù)庫元信息,如果數(shù)據(jù)庫表過多,加載時間長,可能導致服務啟動慢。

那要怎么排查這個問題呢?
恰好在github上看到一個工具就可以發(fā)現(xiàn)問題所在,spring-startup-analyzer,可以分析spring應用啟動過程。

spring-startup-analyzer

使用步驟非常簡單:
1.下載最新的包,放到用戶目錄下,注意最好放到用戶目錄下,否則可能會有問題。
2.添加啟動命令

-Dspring-startup-analyzer.app.health.check.endpoints=http://localhost:8020/actuator/health -javaagent:C:/Users/huangyb1/spring-startup-analyzer/lib/spring-profiler-agent.jar

-Dspring-startup-analyzer.app.health.check.endpoints 是健康檢查的url,當這個接口返回200就表示服務啟動完成了。
-javaagent 配置為上面下載的包路徑
3.啟動觀察有如下日志表示正常,8065斷開可以查看分析報告,可以通過-Dspring-startup-analyzer.admin.http.server.port參數(shù)配置。

一次服務啟動慢問題排查

服務啟動后分析結果如下:

一次服務啟動慢問題排查

可以看到dslContext花費了23秒多,占用了接近一半的時間了。那這個是不是就是在上面xxl job日志后卡住的原因呢?我們看如下的詳細過程,發(fā)現(xiàn)確實如此。

一次服務啟動慢問題排查

解決問題:
從圖可以看出問題就是dlsContext這個加載慢導致,并且它是一個org.jooq.impl.DefaultDSLContext,由org.jooq.impl.DefaultConfiguration導入。
jooq是什么?jOOQ 從您的數(shù)據(jù)庫生成 Java 代碼,并允許您通過其流暢的 API 構建類型安全的 SQL 查詢。
它可以實現(xiàn)將java代碼翻譯成sql語句,如:

create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, count())
      .from(AUTHOR)
      .join(BOOK).on(AUTHOR.ID.equal(BOOK.AUTHOR_ID))
      .where(BOOK.LANGUAGE.eq("DE"))
      .and(BOOK.PUBLISHED.gt(date("2008-01-01")))
      .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
      .having(count().gt(5))
      .orderBy(AUTHOR.LAST_NAME.asc().nullsFirst())
      .limit(2)
      .offset(1)

將被翻譯成

SELECT AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, COUNT(*)
FROM AUTHOR
JOIN BOOK ON AUTHOR.ID = BOOK.AUTHOR_ID
WHERE BOOK.LANGUAGE = 'DE'
AND BOOK.PUBLISHED > DATE '2008-01-01'
GROUP BY AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME
HAVING COUNT(*) > 5
ORDER BY AUTHOR.LAST_NAME ASC NULLS FIRST
LIMIT 2
OFFSET 1

說實話,本人不太喜歡這種書寫方式,這種方式看起來并不直觀,還沒法直接拿這條sql語句出來執(zhí)行,這種方式比較適合一些sql語句很簡單的場景。
我們的項目使用的是mybatis plus,也沒有用到jooq,那它是怎么來的呢?通過maven dependency analyzer可以看出,它是由sharding-jdbc帶入的,前段時間剛好有同學對sharding-jdbc做升級,根據(jù)經(jīng)驗這就是問題所在了。

一次服務啟動慢問題排查

上github也可以看到我們使用這個版本的sharding的jooq確實會導致服務啟動慢,參見issues,官方下一個小版本就修復這個問題。

解決方式也很簡單,升級一些sharding-jdbc即可,通過上面的分析知道也可以排除jooq依賴,@SpringBootApplication(exclude = {JooqAutoConfiguration.class})。
解決后重啟服務觀察到,jooq的初始化沒有了,服務啟動快了20多秒。

一次服務啟動慢問題排查

歡迎關注我的github:https://github.com/jmilktea/jtea文章來源地址http://www.zghlxwxcb.cn/news/detail-602183.html

到了這里,關于一次服務啟動慢問題排查的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 記一次.Net Core程序啟動失敗的排查過程

    閱文時長 | 2分鐘 字數(shù)統(tǒng)計 | 3212字符 主要內(nèi)容 | 1、引言背景 2、排查.NetCore啟動失敗詳細過程 3、聲明與參考資料 『記一次.Net Core程序啟動失敗的排查過程』 編寫人 | SCscHero 編寫時間 | 2021/12/23 PM2:6 文章類型 | 系列 完成度 | 已完成 座右銘 每一個偉大的事業(yè),都有一個微不足

    2024年02月05日
    瀏覽(26)
  • 【記一次線上事故的排查思路】- CPU飆升問題排查

    【記一次線上事故的排查思路】- CPU飆升問題排查

    由于項目排期較緊,臨時從其他組調(diào)來三個開發(fā)資源幫我一起做項目,難免上線的時候大家的需求一塊上線。 問題來了,上線三天后,線上CPU總是莫名奇妙的突然飆升,飆升后CPU并未降下來,而是一直處在高點。 由于是線上導致的問題,CPU超限后,會自動重啟項目,未能保

    2024年01月23日
    瀏覽(27)
  • 一次日志配置未生效問題排查記錄

    一次日志配置未生效問題排查記錄

    某天排查業(yè)務問題時,在我司的日志收集平臺上,未能發(fā)現(xiàn)相關業(yè)務服務接口訪問日志。經(jīng)過和相關同事確定,發(fā)現(xiàn)業(yè)務服務未能將接口訪問日志吐到日志收集平臺,由此開啟一段有點漫長的排查之旅。 業(yè)務服務是典型的SpringBoot web應用,日志記錄采用slf4j+log4j2組合。 通過applica

    2024年02月11日
    瀏覽(17)
  • 記一次Apache HTTP Client問題排查

    記一次Apache HTTP Client問題排查

    通過日志查看,存在兩種異常情況。 第一種:開始的時候HTTP請求會報超時異常。 762663363 [2023-07-21 06:04:25] [executor-64] ERROR - com.xxl.CucmTool - CucmTool|sendRisPortSoap error,url:https://xxxxxx/realtimeservice/services/RisPort org.apache.http.conn.HttpHostConnectException: Connect to xxx [/xxx] failed: 連接超時 第二種

    2024年02月12日
    瀏覽(28)
  • 記一次jedis連接池頑固問題排查與修改

    記一次jedis連接池頑固問題排查與修改

    這輩子不想再看到jedisBrokenPipe!! ? 測試環(huán)境運行16天后報錯信息: 05:42:32.629 [http-nio-8093-exec-2] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - [log,175] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is redis.clients.jedis.exceptions.JedisCon

    2023年04月21日
    瀏覽(43)
  • 一次生產(chǎn)docker MTU=1500問題排查解決

    一次生產(chǎn)docker MTU=1500問題排查解決

    和業(yè)務方進行聯(lián)調(diào),業(yè)務方調(diào)用我方服務, 我方服務部署在虛擬機的docker容器中 提供grpc服務, 通過公網(wǎng)vip lvs到宿主機端口 聯(lián)調(diào)發(fā)現(xiàn) ping 和 telnet我方端口都正常, 但是通過grpc協(xié)議調(diào)用不通,一直超時 在容器上和lvs上tcpdump抓包發(fā)現(xiàn)了問題 容器內(nèi)抓包: lvs上抓包到宿主機:

    2024年04月16日
    瀏覽(17)
  • 【問題排查篇】一次業(yè)務問題對 ES 的 cardinality 原理探究

    作者:京東科技 王長春 小編工作中負責業(yè)務的一個服務端系統(tǒng),使用了 Elasticsearch 服務做數(shù)據(jù)存儲,業(yè)務運營人員反饋,用戶在使用該產(chǎn)品時發(fā)現(xiàn), 用戶后臺統(tǒng)計的訂單筆數(shù)和導出的訂單筆數(shù)不一致 ! 交易訂單筆數(shù)不對,出現(xiàn)差錯訂單了?這一聽極為震撼!出現(xiàn)這樣的問

    2024年02月03日
    瀏覽(20)
  • 記一次Oracle歸檔日志異常增長問題的排查過程

    Oracle歸檔日志是Oracle數(shù)據(jù)庫的重要功能,用于將數(shù)據(jù)庫的重做日志文件(Redo Log)保存到歸檔日志文件(Archive Log)中。歸檔日志的作用是提供數(shù)據(jù)庫的備份和恢復功能,以及支持數(shù)據(jù)庫的持續(xù)性和數(shù)據(jù)完整性。 當數(shù)據(jù)庫處于歸檔模式時,數(shù)據(jù)庫引擎會將已經(jīng)寫滿的重做日志

    2024年02月14日
    瀏覽(22)
  • 記一次 .Net+SqlSugar 查詢超時的問題排查過程

    記一次 .Net+SqlSugar 查詢超時的問題排查過程

    環(huán)境和版本:.Net 6 + SqlSuger 5.1.4.*? ?,數(shù)據(jù)庫是mysql 5.7 ,數(shù)據(jù)量在2000多條左右 業(yè)務是一個非常簡單的查詢,代碼如下: tb_name 下配置了一對多的關系導航,但是執(zhí)行時沒有include導航屬性,當執(zhí)行上述代碼時,查詢非常慢,甚至會超時報錯: The Command Timeout expired before the o

    2024年02月07日
    瀏覽(61)
  • 記一次 MySQL  timestamp 精度問題的排查 → 過程有點曲折

    記一次 MySQL timestamp 精度問題的排查 → 過程有點曲折

    下午正準備出門,跟正刷著手機的老媽打個招呼 我:媽,今晚我跟朋友在外面吃,就不在家吃了 老媽拿著手機跟我說道:你看這叫朋友騙緬北去了,tm血都抽干了,多危險 我:那是他不行,你看要是吳京去了指定能跑回來 老媽:還吳京八經(jīng)的,特么牛魔王去了都得耕地,唐

    2024年02月01日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包