[請益] 資料庫connection太多導致回應變慢
工作上遇到了一個找不太到原因的狀況
語言: Java mybait
新增了一個功能後
endpoint A:
下面有一個method大概會打DB query 200次
這時
endpoint B 的repsonse也跟著大幅增加 (endpoint B會打DB約1000次)
這有什麼可能的原因造成的呢?
* endpoint B 沒有去call 新的method 沒有增加query次數
* 有懷疑是connection pool 爆掉
但不知道該如何debug
且當我部署完 沒去call A的時候
單純call B速度也一樣變慢(沒有call A應該沒有建立connection….吧?)
更新*
的確是n+1問題沒錯
但我困惑的不是該如何解決...
而是為什麼n+1的地方在method A但B會影響
我會覺得是connection pool的問題是因為
執行B的時候並沒有跑到A那段的code
他這裡面不會有一些slow query的情況
目前唯一能想到的就只有
1.
可能打A的時候connection pool 被佔滿了
打B要重建導致速度變慢
Q1.1 不確定mybaits打不同表的connection是不是要重建?還是一樣重pool裡面撈就好
Q1.2 剛部署到新機器上後,沒call過A單純call B也變慢
2. DB被太多query連線導致速度變慢
Q2.1理論上DB應該沒有那麼弱...而且他是在測試環境 只有我當下的單條request
Q2.2 同1.1
怪哉 T.T
請各位大大提供點看法
--
看 DB concurrency query的數量 DB很常成為瓶頸
你這個一定要try跟看才知道,沒有資深的同事可以問嗎?
業務邏輯一定要查這麼多次?
八成DB Query太過於頻繁 不然200次太誇張
1 個 Endpoint call那麼多次,我猜可能是 N+1 queries
Pool設定沒寫出來 db開多少個connection給妳也沒說 大家也
只能隔空抓藥啊… 另外這兩個entrypoint 要打那麼多次sql也
蠻怪的…
是一個request會query DB 200次嗎?用endpoint 打DB幾次
很不精確...
我猜這是n+1的問題,不然怎麼可能打這麼多次
大概就n+1了
200個指令長怎樣 看能不能減少
我也覺得是N+1 如果是mysql 就看slow log
看一下有沒有在loop裡面查sql
可以想想有沒辦法把 200次濃縮成一次
新功能有改 DB 結構嗎? 用預存程序跑嗎? 可以清掉執
行計畫再跑看看
原來是debug,我還以為是通靈,以下開放第一屆天下通靈大會
打這麼多次要不要先濃縮看看
請DBA幫忙看 有工具可以監控SQL指令效率
看內文不懂你如何推論並猜測conn過多
=.=
N+1
雖然不好但也還好,n+1的對象基本上是pk查詢。這該不是
主要原因
資訊太少,補噓一下。上班已經在通靈了。
DB沒這麼弱啦.. 若單純是 select 有正常打上索引、
有用到主鍵,query 時間都<1ms
建議先用EXPLAIN語法去檢查一下
懷疑connection數量 不會直接下指令看連線數嗎
T-SQL寫太爛吧
先確認執行計畫的狀況
不知道業務規模,如果這個表資料只有1萬筆內,直接查全部
再用key去查詢
會不會query一直建新的connection
或connection pool的idle time設定太短
從DB查不就好了 幹嘛在那蝦矇猜問題
DB就是這麼脆弱 請優化200個query的部分
有DB的監控工具可以用 不用這樣瞎猜
可以看到每個階段耗費幾毫秒
讀了你的更新,我只對Q1.2感興趣
在B裡面加些log,準備做時間分析
然後跑(未加新功能)前,所謂正常狀況,跟(加新功能
)後,你所謂的變慢,請先回答慢在哪裏,解bug的方向才
會出來.用射擊法解Bug,情緒常常會像心電圖那樣.還有一
種方法是用圍捕的
感謝 太疑惑忘記基本的方法找問題了T_T
不是db太慢是你的code太爛,不是多條魚是多餘你
有沒有加欄位,or 改 table schema, 1 個 sql query
慢 1ms, 1000次就慢一秒了
你有做讀寫分離嗎
而且你這情況 八成是每次任務都創建一個連線
會搞到N+1通常的code寫得爛..
樓上有幾位別火氣那麼大~ 我的問題一直不是在該怎麼解決速度 或是為什麼這樣打速度會變慢 主要問題是疑惑為啥改A會影響到B速度
※ 編輯: stevekevin10 (219.85.180.114 臺灣), 07/25/2022 12:28:02你db用同一台呀 你去打B的時候 監測db server的cpu,mem
因為你A跟B有共用的 component 也就是DB 你沒有其他工作上
的資深工程師可以問嗎?任何一個有點程度的應該都可以看得
出來問題在哪裡
connection pool 不夠大是有log可以看的,如果是a
的進行過程中b變慢,那應該存在一個很長且耗資源的
查詢在前一個未結束前,不斷累積
table lock 也有可能是讓短查詢變長的原因
爆
[閒聊] B站帳號被封禁如題 我的B站帳號被封禁了 第一次就永久封禁不給申訴== 我想到的理由有以下幾點 1.爆
[問卦] 這世界上有民主國家發生A黨罵B黨,A黨開小弟突然很好奇,世界上相對民主的國家。 民主排名前30的好了。 有發生過這麽扯的事情嗎? A黨批評B黨,結果是A黨把自己人開除的事情? 想想完全不可能啊...爆
[求助] 80坪的房子不住要新買20坪的?幫朋友問 ————— A自己好幾年前跟朋友買了約30年的中古屋,當時就準備未來結婚、有小孩可以住,室內 有80坪,地點超好,高樓層,捷運&公園隔壁,以前定位就是高級大樓,雖然現在看起來 外觀比較老氣,但是整個品質跟社區管理都很好。79
[討論] 有沒有遇過態度大轉彎的業務?為了讓人物清楚,以下簡稱 「業務A」:態度大轉彎的業務 「業務B」:最後簽約的業務 ----------- 買車能夠買到這麼不愉快,還真是初體驗!最近因買車跟福特大安的業務A聯繫上,但最後沒有跟她成交就被惡言相向,完全無法傾聽我們的聲音甚至直接封鎖非常傻眼!68
[坂道] 關於現在在演唱中打call的問題本來標題和分類想寫乃木 可是週末就是理佐卒控,就整個坂道一起討論吧 事情是這樣的,相信大家都知道了 10周年day1 賀喜帶頭打call導致後面都有打 Day2 白七花的出場本來還好,可是一安ガルル直接爆開25
[問卦] A不承認B是他的化名 那罵B會犯法嗎?A不承認B是他的化名 那罵B會犯法嗎? 先說我文組 昨天有A被法院認證他就是網路上的B BUT A 不承認也不否認 一副就是我就不認 你咬我的樣子 那...假設以後大家對B公然侮辱毀謗之類的25
[Vtub] 要如何防止A國人使用B國語言投惡意SC最近廢文發多了 來發個認真的文 看板上有人在討論Kobo 唸中文SC,並提到Holo成員有時不會念外國語sc ,以免sc 裏面 含有惡意內容或被人惡意剪輯 這就讓我想到1
[閒聊] 大家打RANK會討厭看到AD一直Call嗎?曾經我記得我看小明實況的時候 他說過一句話 adc在遊戲內 就是閉嘴 專心操作 專心走位 專心輸出 不要想太多不該想的12
[閒聊] 有女角是喜歡A,但一直關心B的嗎?最近看一部早期的漫畫 女主角先和B結識的,B也一見鍾情喜歡女主 但女主見到A後喜歡上A,但始終和B保持的友誼關係,關心他鼓勵他 只是A總專注在別的事,對女主很冷漠,她也感受到距離,女主也越來越關心B 有女角是喜歡A,但一直關心B的嗎?