色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣去解決MyBatis引起的線程池線程打滿問(wèn)題呢

jf_ro2CN3Fa ? 來(lái)源:稀土掘金 ? 作者:樹(shù)洞君 ? 2022-10-17 16:24 ? 次閱讀

背景

我們有個(gè)業(yè)務(wù)服務(wù)長(zhǎng)期沒(méi)有進(jìn)行過(guò)上線,但是服務(wù)器監(jiān)控經(jīng)常會(huì)發(fā)生報(bào)警,提示 cpu 使用率 100% 影響線上生產(chǎn)。偶發(fā)的現(xiàn)象,所以一開(kāi)始沒(méi)注意,后續(xù)經(jīng)過(guò)排查才發(fā)現(xiàn)原來(lái)是踩中了一個(gè)“坑”。

基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

項(xiàng)目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro

視頻教程:https://doc.iocoder.cn/video/

排查過(guò)程

1、首先排除了新業(yè)務(wù)上線的問(wèn)題

2、其次通過(guò)服務(wù)器的監(jiān)控排除了硬件故障的問(wèn)題

3、于是使用 java 線程分析工具,分析了導(dǎo)致 cpu 過(guò)高的都是哪些線程

b970de72-4dc0-11ed-a3b6-dac502259ad0.jpg

發(fā)現(xiàn)異常線程

排查就會(huì)發(fā)現(xiàn) mybatis 執(zhí)行的相關(guān)線程。

4、于是我們根據(jù)提示找到相應(yīng)的源碼處進(jìn)行分析。mybatis 組裝 sql 語(yǔ)句這里,這段代碼,在 sql 很長(zhǎng)的并且入?yún)⒑芏嗾f(shuō)的時(shí)候,下面對(duì) sql 的拼接,將#{屬性名}替換成?是很耗費(fèi) cpu 的。

b98368ee-4dc0-11ed-a3b6-dac502259ad0.jpg

MyBatis拼接大SQL耗費(fèi)性能

5、那么導(dǎo)致這個(gè)問(wèn)題的原因是什么呢?我們針對(duì) mapper 里的 sql 語(yǔ)句發(fā)現(xiàn),有個(gè)查詢條件入?yún)⑹莻€(gè) list,mapper 是這么寫(xiě):

b9ac1a28-4dc0-11ed-a3b6-dac502259ad0.jpg

foreach

6、為了驗(yàn)證問(wèn)題,我們自己做了一個(gè)測(cè)試,通過(guò)入?yún)l件的調(diào)整,來(lái)進(jìn)行執(zhí)行時(shí)間的監(jiān)控驗(yàn)證,最后經(jīng)過(guò)反復(fù)的測(cè)試發(fā)現(xiàn)「當(dāng)入?yún)?list 的數(shù)量達(dá)到 10 萬(wàn)級(jí)別的時(shí)候,cpu 就飆升到了 120%,執(zhí)行了 29s,是造成線程等待的元兇」

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

項(xiàng)目地址:https://gitee.com/zhijiantianya/yudao-cloud

視頻教程:https://doc.iocoder.cn/video/

總結(jié)

「在使用 list 做 mapper 入?yún)ⅲ欢ㄒ紤]上限」

另外,sql 的 in 里面的數(shù)據(jù)也太多了吧,sql 太長(zhǎng)超過(guò) max_allow_packet 會(huì)報(bào)錯(cuò)的。這個(gè) MySQL 配置,建議不要往大了改!






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2973

    瀏覽量

    104939
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    772

    瀏覽量

    44206
  • RBAC
    +關(guān)注

    關(guān)注

    0

    文章

    44

    瀏覽量

    9978

原文標(biāo)題:MyBatis引起的線程池線程打滿問(wèn)題排查過(guò)程

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    跨平臺(tái)的線程組件--TP組件

    /銷(xiāo)毀代價(jià)是很高的。那么我們要怎么設(shè)計(jì)多線程編程???答案:對(duì)于長(zhǎng)駐的線程,我們可以創(chuàng)建獨(dú)立的線程
    的頭像 發(fā)表于 04-06 15:39 ?896次閱讀

    Java中的線程包括哪些

    線程是用來(lái)統(tǒng)一管理線程的,在 Java 中創(chuàng)建和銷(xiāo)毀線程都是一件消耗資源的事情,線程可以重復(fù)
    的頭像 發(fā)表于 10-11 15:33 ?838次閱讀
    Java中的<b class='flag-5'>線程</b><b class='flag-5'>池</b>包括哪些

    為什么會(huì)有線程怎樣操作線程

    信號(hào)是什么?信號(hào)是如何產(chǎn)生的?為什么會(huì)有線程怎樣操作線程
    發(fā)表于 12-23 07:27

    線程是如何實(shí)現(xiàn)的

    線程的概念是什么?線程是如何實(shí)現(xiàn)的?
    發(fā)表于 02-28 06:20

    基于線程技術(shù)集群接入點(diǎn)的應(yīng)用研究

    本文在深入研究高級(jí)線程技術(shù)的基礎(chǔ)上,分析、研究了固定線程數(shù)目的線程線程數(shù)目動(dòng)態(tài)變化的
    發(fā)表于 01-22 14:21 ?5次下載

    基于Nacos的簡(jiǎn)單動(dòng)態(tài)化線程實(shí)現(xiàn)

    本文以Nacos作為服務(wù)配置中心,以修改線程核心線程數(shù)、最大線程數(shù)為例,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的動(dòng)態(tài)化線程
    發(fā)表于 01-06 14:14 ?879次閱讀

    線程線程

    線程通常用于服務(wù)器應(yīng)用程序。 每個(gè)傳入請(qǐng)求都將分配給線程池中的一個(gè)線程,因此可以異步處理請(qǐng)求,而不會(huì)占用主線程,也不會(huì)延遲后續(xù)請(qǐng)求的處理
    的頭像 發(fā)表于 02-28 09:53 ?812次閱讀
    多<b class='flag-5'>線程</b>之<b class='flag-5'>線程</b><b class='flag-5'>池</b>

    Java線程核心原理

    看過(guò)Java線程源碼的小伙伴都知道,在Java線程池中最核心的類(lèi)就是ThreadPoolExecutor,
    的頭像 發(fā)表于 04-21 10:24 ?890次閱讀

    如何用C++實(shí)現(xiàn)一個(gè)線程

    C++線程是一種多線程管理模型,把線程分成任務(wù)執(zhí)行和線程調(diào)度兩部分。
    發(fā)表于 06-08 14:53 ?1819次閱讀
    如何用C++實(shí)現(xiàn)一個(gè)<b class='flag-5'>線程</b><b class='flag-5'>池</b><b class='flag-5'>呢</b>?

    線程線程怎么釋放

    線程分組看,pool名開(kāi)頭線程占616條,而且waiting狀態(tài)也是616條,這個(gè)點(diǎn)就非常可疑了,我斷定就是這個(gè)pool開(kāi)頭線程導(dǎo)致的問(wèn)題。我們先排查為何這個(gè)
    發(fā)表于 07-31 10:49 ?2326次閱讀
    <b class='flag-5'>線程</b><b class='flag-5'>池</b>的<b class='flag-5'>線程</b>怎么釋放

    Spring 的線程應(yīng)用

    我們?cè)谌粘i_(kāi)發(fā)中,經(jīng)常跟多線程打交道,Spring 為我們提供了一個(gè)線程方便我們開(kāi)發(fā),它就是 ThreadPoolTaskExecutor ,接下來(lái)我們就來(lái)聊聊 Spring 的線程
    的頭像 發(fā)表于 10-13 10:47 ?638次閱讀
    Spring 的<b class='flag-5'>線程</b><b class='flag-5'>池</b>應(yīng)用

    線程基本概念與原理

    一、線程基本概念與原理 1.1 線程概念及優(yōu)勢(shì) C++線程簡(jiǎn)介
    的頭像 發(fā)表于 11-10 10:24 ?563次閱讀

    線程的基本概念

    ? 呃呃,我這么問(wèn)就很奇怪,因?yàn)?b class='flag-5'>線程是什么我都沒(méi)說(shuō),怎么會(huì)知道為什么會(huì)有線程?所以我打算帶大家去思考一個(gè)場(chǎng)景: 當(dāng)我們的程序中:有一批
    的頭像 發(fā)表于 11-10 16:37 ?551次閱讀
    <b class='flag-5'>線程</b><b class='flag-5'>池</b>的基本概念

    線程的創(chuàng)建方式有幾種

    線程是一種用于管理和調(diào)度線程的技術(shù),能夠有效地提高系統(tǒng)的性能和資源利用率。它通過(guò)預(yù)先創(chuàng)建一組線程并維護(hù)一個(gè)工作隊(duì)列,將任務(wù)提交給線程
    的頭像 發(fā)表于 12-04 16:52 ?910次閱讀

    什么是動(dòng)態(tài)線程?動(dòng)態(tài)線程的簡(jiǎn)單實(shí)現(xiàn)思路

    因此,動(dòng)態(tài)可監(jiān)控線程一種針對(duì)以上痛點(diǎn)開(kāi)發(fā)的線程管理工具。主要可實(shí)現(xiàn)功能有:提供對(duì) Spring 應(yīng)用內(nèi)線程
    的頭像 發(fā)表于 02-28 10:42 ?682次閱讀
    主站蜘蛛池模板: 亚洲AV精品乱码专区| 九色终合九色综合88| CHRISTMAS农村夫妻HO| 亚洲AV无码一区二区色情蜜芽| 善良的小峓子2在钱中文版女主角 善良的小峓子2在钱免费中文字 | 久久这里只精品国产99re66| 麻豆精品传媒卡一卡二传媒短视频| 女人夜夜春| 麻豆天美国产一区在线播放| 你是淫荡的我的女王| 快穿做妓女好爽H| 欧美日韩精品一区二区三区高清视频| 久久视频在线视频观品15| 果冻传媒 在线播放观看| 久久er国产免费精品| 黄色天堂网站| 伦理片 qvod| 日韩精品亚洲专区在线电影不卡 | 久久成人无码国产免费播放| 毛片免费在线| 日韩人妻无码精品-专区| 性一交一乱一色一视频| 永久免费看bbb| 一区二区三区内射美女毛片| 亚洲精品无码不卡在线播HE| 亚洲精品97福利在线| 中文字幕亚洲综合小综合在线| tobu中国日本高清| 国产露脸A片国语露对白| 国产囗交10p| 国产一区二区不卡老阿姨| 国产小视频免费在线观看| 久久无码人妻中文国产| 翘臀后进美女白嫩屁股视频| 亚洲AV國產国产久青草| 2012中文字幕在线动漫电影| 丰满的女友1在线观看| 精品国产中文字幕在线视频| 久久草这在线观看免费| 青青青青草原国产免费| 亚洲精品久久久久AV无码林星阑|