女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

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

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

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

一個(gè)update語(yǔ)句執(zhí)行要10s,大廠的架構(gòu)真無(wú)語(yǔ)!

jf_ro2CN3Fa ? 來(lái)源:芋道源碼 ? 2023-01-29 10:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


一、問(wèn)題描述

2022年7月2x日,窗外夕陽(yáng)將落不落,余暉灑落在街道上,遠(yuǎn)處的熱浪仿佛在說(shuō):嘿,歡迎來(lái)到烤箱中的瑞士卷—成都!

“嘿!”,我回過(guò)神來(lái)看到一只潔白纖細(xì)的手落在我的肩膀上,眼光從窗外收回順著手臂快速扭跟過(guò)去,然后看到臉色暗淡夾雜著些許痘痘的測(cè)試妹紙一臉的嚴(yán)肅!“昨天晚上上線后,這個(gè)后臺(tái)執(zhí)行更新信息非常緩慢,這里肯定有問(wèn)題!”

基于 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://github.com/YunaiV/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

二、問(wèn)題分析

“好的,我排查一下”。三步并作兩步回到工位,掀開(kāi)MacBook Pro的蓋子、打開(kāi)顯示器的電源、輸入鏈路日志跟蹤系統(tǒng)地址、復(fù)制traceId、查看日志…… 這一套操作熟悉得令人心疼。

排查日志初步發(fā)現(xiàn)實(shí)際調(diào)用了兩次,第一次執(zhí)行時(shí)間接近10s,調(diào)用超時(shí),第二次執(zhí)行時(shí)間接近5s。你肯定也想到了,RPC調(diào)用retry設(shè)置了值。對(duì)RPC配置檢查之后確實(shí)設(shè)置的是retry=1,實(shí)際項(xiàng)目中,增、刪、改等操作不應(yīng)設(shè)置retry。

通過(guò)調(diào)用鏈排查發(fā)現(xiàn)update執(zhí)行非常耗時(shí)。聰明的你一定也第一時(shí)間懷疑update語(yǔ)句有性能問(wèn)題。把update語(yǔ)句拿出來(lái):

updatetableseta=#{1},b=#{2},...whereid=#{0}(id主鍵)

這下傻眼了,根據(jù)主鍵id更新怎么可能要執(zhí)行10s?

masaga?!!

為了驗(yàn)證我的猜想,command + 空格、鍵入idea并回車、打開(kāi)對(duì)應(yīng)的工程、定位到對(duì)應(yīng)的方法處、迅速瀏覽一遍并思索片刻之后,真相大白!

06f25d70-9f73-11ed-bfe3-dac502259ad0.jpg

服務(wù)B執(zhí)行完update語(yǔ)句之后,事務(wù)commit之前,還有兩個(gè)異步通知任務(wù),使用的是spring的@Async注解,自定義的線程池,跟蹤日志中的線程標(biāo)志,排查過(guò)程中發(fā)現(xiàn)有的異步任務(wù)居然由原線程執(zhí)行!進(jìn)一步分析日志發(fā)現(xiàn)這種現(xiàn)象并不是一直發(fā)生,有時(shí)又是由異步線程執(zhí)行。開(kāi)始排查線程池,線程池果然設(shè)置了callRunner的失敗策略。

所以,由原線程執(zhí)行時(shí),事務(wù)的范圍如下:

06fe1174-9f73-11ed-bfe3-dac502259ad0.jpg

定位到原因之后,修改線程池參數(shù)為常見(jiàn)策略,初始和最大線程數(shù)相同,隊(duì)列數(shù)9999,保證線程池的線程充足性。

修復(fù)

灰度

招呼測(cè)試妹紙測(cè)試

自信滿滿,悠閑喝水

基于 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://github.com/YunaiV/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

三、梅開(kāi)二度

“在高并發(fā)場(chǎng)景下,復(fù)現(xiàn)了這個(gè)問(wèn)題,你快看一下”!測(cè)試妹紙對(duì)我投來(lái)鄙視的眼光犀利的說(shuō)道:“修復(fù)好了,再喊我回歸哈,拜拜~”。

奇怪,為什么這么平常的一個(gè)update語(yǔ)句,怎么會(huì)執(zhí)行這么長(zhǎng)時(shí)間呢?難道出發(fā)了框架的bug導(dǎo)致事務(wù)提交延遲?不對(duì)不對(duì),這個(gè)方向想偏了~也沒(méi)有其他地方在更新這個(gè)表了呀?不可能有表鎖,更不可能有行鎖呀……

masaga?!!

根據(jù)表鎖以及行鎖的思路,為了驗(yàn)證我的內(nèi)心OS猜想,立即使用 show processlist 進(jìn)行了連接查詢,果然有重大發(fā)現(xiàn),除了服務(wù)B有連接之外,還有服務(wù)A的連接。而服務(wù)A又是服務(wù)B的上游系統(tǒng)!系統(tǒng)架構(gòu)如下:

070c7a52-9f73-11ed-bfe3-dac502259ad0.jpg

執(zhí)行順序如下:

順序 服務(wù) 執(zhí)行動(dòng)作 關(guān)鍵點(diǎn)
1 服務(wù)A 執(zhí)行update語(yǔ)句 數(shù)據(jù)庫(kù) 行鎖 lock
2 服務(wù)A 調(diào)用服務(wù)B RPC 調(diào)用
3 服務(wù)B 執(zhí)行update語(yǔ)句 數(shù)據(jù)庫(kù) 行鎖 waiting
4 服務(wù)A 調(diào)用服務(wù)B超時(shí) RPC timeout
5 服務(wù)A 再次調(diào)用服務(wù)B RPC retry
6 服務(wù)A 調(diào)用調(diào)用服務(wù)B再次超時(shí) RPC timeout
7 服務(wù)A PRC調(diào)用超時(shí)異常 數(shù)據(jù)庫(kù) 事務(wù)回滾 行鎖 unlock
8 服務(wù)B 執(zhí)行 數(shù)據(jù)庫(kù) 行鎖 競(jìng)爭(zhēng)

不被人信任的滋味很難受!為了重新贏回測(cè)試妹紙對(duì)我的信任,這次的bug修復(fù)只需成功不許失敗!

四、解決方案

知道病根之后,問(wèn)題就很簡(jiǎn)單了。

最理想的方案

對(duì)微服務(wù)架構(gòu)進(jìn)行重構(gòu),但這樣做帶來(lái)的收益不高,現(xiàn)在手上還有優(yōu)先級(jí)更高的事情要做。

07185eda-9f73-11ed-bfe3-dac502259ad0.jpg
最實(shí)際的方案

是將服務(wù)A對(duì)服務(wù)B的調(diào)用和服務(wù)A的事務(wù)分離出來(lái)。這樣就不存在鎖競(jìng)爭(zhēng)的問(wèn)題了。

072741ca-9f73-11ed-bfe3-dac502259ad0.jpg

五、總結(jié)

看到了這里,你心里是不是已經(jīng)在想:我靠,大廠的系統(tǒng)架構(gòu)真的很垃圾,我都是關(guān)著燈的~(走錯(cuò)片場(chǎng)~)

其實(shí)這個(gè)系統(tǒng)變成這樣是有歷史原因的,如果當(dāng)初的開(kāi)發(fā)者能夠采用DDD的思想或者能夠明白微服務(wù)的對(duì)象高內(nèi)聚思想,或許今天就不會(huì)發(fā)生在我身上這場(chǎng)研發(fā)與測(cè)試之間的信任危機(jī)。

夕陽(yáng)落下,夜晚籠罩著大地。路旁的小貓咪悠然站了起來(lái),張大嘴巴打個(gè)哈欠的同時(shí)伸了個(gè)懶腰,然后走向3號(hào)門口,等待著心地善良的加班兒投食貓糧。“驗(yàn)證通過(guò),早點(diǎn)下班”。不遠(yuǎn)處傳來(lái)測(cè)試妹紙的聲音,夾雜著中央空調(diào)吹出的風(fēng)聲。



審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • macbook
    +關(guān)注

    關(guān)注

    0

    文章

    500

    瀏覽量

    42233
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    508

    瀏覽量

    20153
  • 系統(tǒng)架構(gòu)
    +關(guān)注

    關(guān)注

    1

    文章

    72

    瀏覽量

    23824

原文標(biāo)題:一個(gè)update語(yǔ)句執(zhí)行要10s,大廠的架構(gòu)真垃圾!

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基礎(chǔ)篇3:掌握Python中的條件語(yǔ)句與循環(huán)

    塊 else: # 所有前面的條件表達(dá)式都為假時(shí)執(zhí)行的代碼塊 示例 以下是個(gè)簡(jiǎn)單的示例,演示了如何使用條件語(yǔ)句來(lái)決定是否打印不同的消息: 復(fù)制代碼 age = 18 if ag
    發(fā)表于 07-03 16:13

    淺談wsl --update` 命令行選項(xiàng)無(wú)效的解決方案

    PS C:\Users\Administrator> wsl --update >> 命令行選項(xiàng)無(wú)效: --update
    的頭像 發(fā)表于 06-27 10:28 ?152次閱讀

    《ESP32S3 Arduino開(kāi)發(fā)指南》第三章 C/C++語(yǔ)言基礎(chǔ)

    訪問(wèn)個(gè)數(shù)組中的某個(gè)元素,則需要使用以下語(yǔ)句。數(shù)組名稱[下標(biāo)] 需要注意的是,數(shù)組下標(biāo)是從0開(kāi)始編號(hào)的。例如,將數(shù)組a中的第一個(gè)元素賦值為
    發(fā)表于 06-10 09:20

    詳解TIA Portal SCL編程語(yǔ)言中的IF語(yǔ)句

    IF 語(yǔ)句是編程中最基本和最重要的控制結(jié)構(gòu)之,它的主要作用是根據(jù)條件決定程序的執(zhí)行路徑,IF 語(yǔ)句是編程中實(shí)現(xiàn)邏輯判斷和決策的基礎(chǔ)。
    的頭像 發(fā)表于 05-24 15:01 ?494次閱讀
    詳解TIA Portal SCL編程語(yǔ)言中的IF<b class='flag-5'>語(yǔ)句</b>

    hrtim里update reset和reset update同時(shí)打開(kāi)不會(huì)互相激勵(lì)嗎?

    hrtim里update reset和reset update同時(shí)打開(kāi)不會(huì)互相激勵(lì)嗎,另外為什么現(xiàn)在定時(shí)器周期值不用-1了
    發(fā)表于 04-27 08:57

    CPU的各種指令和執(zhí)行流程

    、數(shù)據(jù)傳輸?shù)裙δ堋?b class='flag-5'>要深入理解CPU的指令,我們需要從多個(gè)維度進(jìn)行分析,尤其是指令的構(gòu)成、分類、執(zhí)行流程以及與不同架構(gòu)的關(guān)系。
    的頭像 發(fā)表于 04-18 11:24 ?750次閱讀

    ADC128S022的驅(qū)動(dòng)架構(gòu)參考 ti-adc128s052.c,如何做移位生成12bit結(jié)果呢?

    ADC128S022的驅(qū)動(dòng)架構(gòu)參考 ti-adc128s052.c, 具體如下圖所示。 上層讀取buf[1], buf[2]請(qǐng)問(wèn)如何做移位生成12bit結(jié)果呢?
    發(fā)表于 12-16 06:32

    深入理解C語(yǔ)言:循環(huán)語(yǔ)句的應(yīng)用與優(yōu)化技巧

    在程序設(shè)計(jì)中,我們常常需要重復(fù)執(zhí)行段代碼。為了提高效率和簡(jiǎn)化代碼,循環(huán)語(yǔ)句應(yīng)運(yùn)而生。C語(yǔ)言作為門經(jīng)典的編程語(yǔ)言,提供了多種循環(huán)控制結(jié)構(gòu),幫助程序員高效地實(shí)現(xiàn)重復(fù)操作。掌握循環(huán)
    的頭像 發(fā)表于 12-07 01:11 ?600次閱讀
    深入理解C語(yǔ)言:循環(huán)<b class='flag-5'>語(yǔ)句</b>的應(yīng)用與優(yōu)化技巧

    LM4890做了個(gè)音頻功放電路,使用時(shí)發(fā)現(xiàn)4890不到10S鐘就非常燙接著就保護(hù)無(wú)聲了,是什么原因?

    實(shí)際使用時(shí)發(fā)現(xiàn)4890不到10S鐘就非常燙接著就保護(hù)無(wú)聲了。這可能是什么原因呢,難道是MSOP封裝的4890溫度上升得更快無(wú)法達(dá)到實(shí)際1W的輸出功率? 還有個(gè)問(wèn)題,開(kāi)始我曾經(jīng)把反
    發(fā)表于 10-24 08:25

    PCM2706C電腦端播放音樂(lè)后,點(diǎn)擊暫停出現(xiàn)10s左右的微弱噪聲如何解決?

    請(qǐng)教TI工程師,我的系統(tǒng)架構(gòu)為PCM2706C + I2S DAC解碼,到耳機(jī)輸出, 出現(xiàn)的問(wèn)題是電腦端播放音樂(lè)后,點(diǎn)擊暫停出現(xiàn)10s左右的微弱噪聲, 用邏輯分析儀可捕捉到這10s
    發(fā)表于 10-17 07:50

    TAS5805MPWPR輸出15W 10s后,芯片過(guò)熱保護(hù)了是什么原因?qū)е碌模?/a>

    TAS5805MPWPR輸出15W 10s后,芯片過(guò)熱而保護(hù)了。輸出的喇叭是4歐,底下散熱焊盤接觸良好。
    發(fā)表于 10-15 07:38

    LTspice的編程語(yǔ)句應(yīng)該怎么寫?

    有關(guān)LTspice電路仿真軟件的使用,應(yīng)該怎么編寫個(gè)變壓器的語(yǔ)句,尤其是多路輸出的,并且這個(gè)軟件是否支持多路浮動(dòng)電源輸出,就像反激式開(kāi)關(guān)電源那樣副邊多路浮地? 有關(guān)LTspice的軟件使用有什么資料推薦,重點(diǎn)是關(guān)于編程
    發(fā)表于 10-11 19:19

    想設(shè)計(jì)個(gè)10Hz~10MHz的峰值檢波電路,請(qǐng)問(wèn)這個(gè)架構(gòu)可以達(dá)到我頻率范圍的要求嗎?

    我想設(shè)計(jì)個(gè)10Hz~10MHz的峰值檢波電路,請(qǐng)問(wèn)這個(gè)架構(gòu)可以達(dá)到我頻率范圍的要求嗎?如果可以,器件的選型應(yīng)該是怎樣的,如果不可以,什
    發(fā)表于 09-19 06:44

    不到10塊錢,用Ai-M61-32S如何自制個(gè)開(kāi)機(jī)棒?

    ?如何自制個(gè)開(kāi)機(jī)棒? Ai-M61-32S開(kāi)機(jī)棒是個(gè)僅使用Ai-M61-32S的開(kāi)機(jī)棒,無(wú)需
    的頭像 發(fā)表于 08-27 16:17 ?714次閱讀
    不到<b class='flag-5'>10</b>塊錢,用Ai-M61-32<b class='flag-5'>S</b>如何自制<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>開(kāi)機(jī)棒?

    使用ChatGPT解決開(kāi)發(fā)問(wèn)題

    數(shù)據(jù)庫(kù)問(wèn)題 案例1 這段 SQL 查詢語(yǔ)句是用于獲取最近更新的前 10 個(gè)銷售訂單 sales_order 關(guān)聯(lián)的交付信息 sales_order_delivery_info。 ? SELECT
    的頭像 發(fā)表于 07-19 16:27 ?1124次閱讀
    使用ChatGPT解決開(kāi)發(fā)問(wèn)題
    主站蜘蛛池模板: 泰安市| 安多县| 莲花县| 新巴尔虎左旗| 淳安县| 黄浦区| 东兴市| 梨树县| 资中县| 六枝特区| 礼泉县| 旅游| 锦屏县| 拉孜县| 垣曲县| 万全县| 方正县| 宿州市| 郑州市| 定南县| 资溪县| 浦东新区| 安远县| 峡江县| 大悟县| 长汀县| 东源县| 梅河口市| 和林格尔县| 自治县| 铜川市| 苗栗县| 洛隆县| 商城县| 东港市| 福海县| 成都市| 安达市| 宣化县| 若羌县| 南丹县|