[請益] 資料庫connection太多導致回應變慢

軟工

37173

工作上遇到了一個找不太到原因的狀況

語言: 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

請各位大大提供點看法

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.85.180.114 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1658431317.A.D01.html
drajan1樓看 DB concurrency query的數量 DB很常成為瓶頸 07/22 04:23
keel901352樓你這個一定要try跟看才知道,沒有資深的同事可以問嗎? 07/22 04:32
sniper28243樓業務邏輯一定要查這麼多次? 07/22 06:23
bill02054樓八成DB Query太過於頻繁 不然200次太誇張 07/22 06:36
day8312315樓1 個 Endpoint call那麼多次,我猜可能是 N+1 queries 07/22 07:19
choYM6樓Pool設定沒寫出來 db開多少個connection給妳也沒說 大家也 07/22 07:22
choYM7樓只能隔空抓藥啊… 另外這兩個entrypoint 要打那麼多次sql也 07/22 07:22
choYM8樓蠻怪的… 07/22 07:22
s06yji39樓是一個request會query DB 200次嗎?用endpoint 打DB幾次 07/22 07:36
s06yji310樓很不精確... 07/22 07:36
jack020411樓我猜這是n+1的問題,不然怎麼可能打這麼多次 07/22 07:39
ricestand12樓大概就n+1了 07/22 08:40
godddddd13樓200個指令長怎樣 看能不能減少 07/22 08:42
bill020514樓我也覺得是N+1 如果是mysql 就看slow log 07/22 08:48
ntpuisbest15樓 07/22 09:23
ntpuisbest16樓看一下有沒有在loop裡面查sql 07/22 09:24
iamshiao17樓可以想想有沒辦法把 200次濃縮成一次 07/22 10:22
iamshiao18樓新功能有改 DB 結構嗎? 用預存程序跑嗎? 可以清掉執 07/22 10:24
iamshiao19樓行計畫再跑看看 07/22 10:24
yfr20樓原來是debug,我還以為是通靈,以下開放第一屆天下通靈大會 07/22 10:34
WaterLengend21樓打這麼多次要不要先濃縮看看 07/22 11:07
ChungLi556622樓請DBA幫忙看 有工具可以監控SQL指令效率 07/22 11:19
MoonCode23樓看內文不懂你如何推論並猜測conn過多 07/22 12:45
worf24樓=.= 07/22 12:54
Uzak25樓N+1 07/22 13:07
MonyemLi26樓雖然不好但也還好,n+1的對象基本上是pk查詢。這該不是 07/22 13:40
MonyemLi27樓主要原因 07/22 13:40
s06yji328樓資訊太少,補噓一下。上班已經在通靈了。 07/22 13:53
guanting88629樓DB沒這麼弱啦.. 若單純是 select 有正常打上索引、 07/22 13:58
guanting88630樓有用到主鍵,query 時間都<1ms 07/22 13:58
更多請益
[請益] 寫程式,一個49吋32:9或兩個27吋16:9?
[請益] AWS進修問題
[請益] Java後端薪水更高的方向
[請益] 接手外包商的code沒交接也沒人可以問
[請益] 轉職offer請益 微更
[請益] 想請問關於課程的選擇抑或自學
[請益] Offer請益
[請益] offer請益