簡體   English   中英

在同一請求期間使用 HikariCP 獲取后續連接似乎很慢

[英]Getting subsequent connections using HikariCP during same request seems slow

我有一個 Spring 啟動應用程序,它使用 HikariCP 進行 Postgres 連接池。

最近,我設置了跟蹤以收集一些數據,了解在處理對特定端點的請求時所花費的時間。

我的假設是,在使用 HikariCP 時:

  1. 處理請求時第一次連接到數據庫可能會慢一點
  2. 與數據庫的后續連接應該很快(< 10 毫秒)

但是,如跟蹤所示,第一個連接速度很快(< 10 毫秒)。 雖然同一請求處理過程中的一些后續連接也很快(< 10 毫秒),但我經常看到一些后續連接需要 50-100 毫秒,這對我來說似乎很慢,盡管我不確定這是否是預期的或不是。

我可以配置什么來改善這種行為嗎?

也許很高興知道:

  • 有問題的后端現在並沒有真正看到任何其他流量,所以它只在我手動向它發送請求時處理流量
  • 我已將 maximumPoolSize 更改為 1 以排除問題是它在 1 個請求的上下文中使用不同的連接,這就是導致問題的原因。 仍然可以看到相同的行為。

我使用默認的 Hikari 設置,我沒有更改它們。

軌跡截圖

如果從池中獲取已初始化的連接大約需要 10 毫秒,我確實認為您的池配置或池使用有問題。 我希望它是亞毫秒......你確定你正在正確使用池嗎?

確保盡可能使用新版本的池和驅動程序,並確保未設置connectionTestQuery ,因為每次從池中獲取連接時都會執行查詢。 對於設置的 rest,默認值應該足夠好。

調試日志可能是一回事,有助於弄清楚發生了什么,池中的指標是另一回事。 看看 Spring Boot Actuator,它會幫助您...

要回答關於如何改善這種情況的實際問題,因為它實際上需要大約 10 毫秒才能獲得連接:不要為每個查詢獲取連接並將連接返回到池中......如果你不想傳遞連接在您的代碼中,如果它適合您的用例,您可以通過確保將整個請求包裝在事務中來輕松實現這一點。 請參閱有關管理事務的 Spring 指南

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM