日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

一次性講清楚「連接池獲取連接慢」的所有原因|

來源: 責編: 時間:2023-12-05 09:25:44 270觀看
導讀一、前言應用連接數據庫基本上都是通過連接池去連接,比如常用的 HikariCP、Druid 等,在應用運行期間經常會出現獲取連接很慢的場景,大多數同學都是一頭霧水,不知道從哪下手。而且很多時候都是偶發場景,讓人頭疼不已,別著急,

一、前言

應用連接數據庫基本上都是通過連接池去連接,比如常用的 HikariCP、Druid 等,在應用運行期間經常會出現獲取連接很慢的場景,大多數同學都是一頭霧水,不知道從哪下手。而且很多時候都是偶發場景,讓人頭疼不已,別著急,本文帶你逐步剖析獲取連接慢的所有可能的原因,以及對應的調優手段,讓你成為連接池排障大師。WZv28資訊網——每日最新資訊28at.com

二、連接池監控

排查問題的前提是發現問題,所以首先需要有連接池的詳細監控,下面我們以 HikariCP 為例,簡單介紹幾個常用的指標的含義。WZv28資訊網——每日最新資訊28at.com

圖片圖片WZv28資訊網——每日最新資訊28at.com

圖片圖片WZv28資訊網——每日最新資訊28at.com

圖片圖片WZv28資訊網——每日最新資訊28at.com

對應應用程序比較敏感的時間就是獲取連接耗時,因為它是同步的會直接影響鏈路的RT,下面我們就來逐步分析造成這個獲取連接耗時較高的所有可能性以及解決方案。WZv28資訊網——每日最新資訊28at.com

三、排查思路

連接池存在等待連接

獲取連接耗時較高最直接的原因就是存在等待連接數,這種情況直接觀測等待連接數的大盤即可WZv28資訊網——每日最新資訊28at.com

圖片圖片WZv28資訊網——每日最新資訊28at.com

那么又有哪幾種情況會導致存在等待連接數呢?WZv28資訊網——每日最新資訊28at.com

  • 連接池容量過小

如果日常的活躍連接數/總連接比例持續很高,或者 QPS * AVG-RT(s) > 連接總數說明當前連接池的最大連接數已經不足以支撐當前的流量,如何解決?WZv28資訊網——每日最新資訊28at.com

適當增加連接池最大連接數:連接數也不是越大越好,一般是根據 CPU 核數決定,HikariCP 官方給出了一個公式可以做一下參考,最大連接數一般不要超過 50。WZv28資訊網——每日最新資訊28at.com

core_count 為core的數量 effective_spindle_count 為掛載的磁盤數量。
core_count 為core的數量 effective_spindle_count 為掛載的磁盤數量。
  • 應用擴容:如果連接數調大后,仍然無法解決,說明單機的連接數已經達到上限,需要對應用進行擴容,但是需要注意擴容節點的數量,單機連接數*節點數量不要超過數據庫支持的最大連接數

有慢查詢&長事務

  • 慢SQL

慢 SQL 相對來說比較好排查,數據庫或者數據庫中間件都有成熟的慢 SQL 采集工具。只需要分析一下指定時間段內是否有慢 SQL 即可。 如果SQL 優化空間比較低,可以把慢 SQL 和核心業務分 2 個數據源,防止慢 SQL 影響正常核心業務。WZv28資訊網——每日最新資訊28at.com

  • 長事務

長事務是很容易忽略的一種 case,可以通過觀測連接使用時間指標和 SQL 耗時來分析,如果連接使用平均耗時遠大于 SQL 平均耗時,那么說明有長事務。還可以根據 HikariCP 自帶的連接泄露檢測來分析,當連接被借出后長時間未歸還(超過配置的閾值 leak-detection-threshold=30000)會打印借出時的堆棧,可以幫助我們快速定位。WZv28資訊網——每日最新資訊28at.com

圖片圖片WZv28資訊網——每日最新資訊28at.com

還可以通過 RDS 的 SQL 洞察來分析是否有長事務,如果使用 Spring+JDBC 管理事務的情況下,開啟事務的命令是 SET autocommit=0,提交事務是 commit,這里根據數據庫線程 ID 來逐個分析,提交事務的時間-開啟事務的時間=事務持續時間。WZv28資訊網——每日最新資訊28at.com

圖片WZv28資訊網——每日最新資訊28at.com

應用負載過高WZv28資訊網——每日最新資訊28at.com

由于 HikariCP、Druid 在從連接池借出連接時,會有一個同步探活的操作,比如直接 MySQL 的 PING 命令或執行 select 'X' 等,因為有網絡 IO,所以這里會讓當前線程進入阻塞狀態讓出 CPU 時間片。
WZv28資訊網——每日最新資訊28at.com

圖片圖片WZv28資訊網——每日最新資訊28at.com

在 CPU 繁忙時,執行完網絡 IO 后等待獲取 CPU 時間片的時間較長,最終表現的結果就是獲取連接時間拉長。這種 case 的分析手段比較簡單,直接通過觀測應用的 CPU 和 Load 指標即可。WZv28資訊網——每日最新資訊28at.com

應用STW

在獲取連接方法開始到結束期間,如果應用發生了 STW,就會導致獲取連接耗時升高,需要結合 JVM 監控 &GC 日志來分析,關于 GC 分析不是本文重點,這里簡單列舉幾個重點說明一下(以 ZGC 舉例)。
WZv28資訊網——每日最新資訊28at.com

  • JVM 監控存在 Allocation Stall(垃圾回收阻塞,會暫停線程)或者暫停時間較長。

圖片圖片WZv28資訊網——每日最新資訊28at.com

圖片圖片WZv28資訊網——每日最新資訊28at.com

  • GC 日志相對于監控會更為準確一點,把日志文件直接丟到 https://gceasy.ycrash.cn/ 里面分析一下即可,會輸出詳細的報告,重點關注一下 STW 時間和分配阻塞。

圖片圖片WZv28資訊網——每日最新資訊28at.com

圖片圖片WZv28資訊網——每日最新資訊28at.com

網絡阻塞

這一類問題比較難以排查,具有偶發性和難以觀測的特點,網絡阻塞也分好幾種情況。
WZv28資訊網——每日最新資訊28at.com

  • 網絡抖動

這是最常見的一種情況,一般我們可以通過觀測應用所在主機的 TCP 重傳監控是否有尖刺,但這里要注意下,TCP 重傳不代表一定是網絡抖動,也可能是網絡帶寬打滿或者數據庫 &DAL 異常。WZv28資訊網——每日最新資訊28at.com

圖片圖片WZv28資訊網——每日最新資訊28at.com

除了監控還可以通過網絡循環抓包來分析(主要磁盤容量不要保留太多文件),可以參考以下命令。WZv28資訊網——每日最新資訊28at.com

抓取 3306 端口的網絡包,存儲到 3306.pcap 文件中,-C 50 -W 10 代表一個文件最大 50M,最多保留 10 個 tcpdump -i eth0 port 3306 -w 3306.pcap -C 50 -W 10。WZv28資訊網——每日最新資訊28at.com

然后導入到 WireShark 工具中分析,重點關注 TCP Retransmission 即 TCP 重傳。WZv28資訊網——每日最新資訊28at.com

圖片圖片WZv28資訊網——每日最新資訊28at.com

  • 網絡阻塞

如機器帶寬打滿,具體表現也是 TCP 重傳,這里可以觀測機器的帶寬監控和機器支持的最大帶寬做對比,看看是否超過限制。WZv28資訊網——每日最新資訊28at.com

圖片圖片WZv28資訊網——每日最新資訊28at.com

數據庫&數據庫中間件異常

當數據庫或者數據庫中間件出現異常時,對于上游應用的表現大多數就是 SQL RT 增高、TCP 重傳。如果懷疑是數據庫或者數據庫中間件出現異常,可以先確定自己的應用連的是哪個庫,這里可以通過應用監控(上下游 -RDS)直觀的看到應用連接的具體的庫信息,然后再觀測對應 RDS 和數據庫中間件的監控進一步分析。
WZv28資訊網——每日最新資訊28at.com

圖片圖片WZv28資訊網——每日最新資訊28at.com

  • 如果是數據庫中間件域名,就可以看數據庫中間件的監控大盤。

圖片圖片WZv28資訊網——每日最新資訊28at.com

如果數據庫中間件本身沒有異常,可以繼續下鉆到 RDS。WZv28資訊網——每日最新資訊28at.com

圖片圖片WZv28資訊網——每日最新資訊28at.com

  • 如果是 RM/RR 開頭的,說明連的是 RDS,可以看阿里云的 RDS 監控,把下面的 Rdsid 替換一下即可。
https://rdsnext.console.aliyun.com/detail/{替換成rdsId}/performance?reginotallow=cn-hangzhou&DedicatedHostGroupId=

重點觀測 CPU內存利用率 & IOPS 使用率,也可以框選指定時間段進行自動診斷。WZv28資訊網——每日最新資訊28at.com

圖片圖片WZv28資訊網——每日最新資訊28at.com

四、總結

本文列舉了幾乎所有可能導致連接池獲取連接慢的 case,相信看完的讀者以后再遇到此類問題時,再也不會一頭霧水了。學會自助排查,不光可以提升自己的排障能力,同時也能減輕各位中間件 &DBA 小伙伴的客服壓力。WZv28資訊網——每日最新資訊28at.com

參考文檔:https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-SizingWZv28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-38133-0.html一次性講清楚「連接池獲取連接慢」的所有原因|

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 優化線上故障排查與性能問題的方法,你學會了嗎?

下一篇: C 語言變長參數及其陷阱

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 潮安县| 乌什县| 常德市| 安平县| 琼中| 建湖县| 崇阳县| 湘潭市| 梅州市| 揭阳市| 本溪市| 昌黎县| 武宣县| 武城县| 肥乡县| 原平市| 深州市| 繁昌县| 北安市| 岢岚县| 武隆县| 达日县| 昭苏县| 体育| 建平县| 怀集县| 鲜城| 湛江市| 大关县| 维西| 丰顺县| 且末县| 株洲市| 武功县| 芦山县| 汤原县| 太仓市| 承德县| 太仆寺旗| 灵宝市| 宜春市|