成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發(fā) 前端
本文列舉了幾乎所有可能導(dǎo)致連接池獲取連接慢的 case,相信看完的讀者以后再遇到此類問(wèn)題時(shí),再也不會(huì)一頭霧水了。學(xué)會(huì)自助排查,不光可以提升自己的排障能力,同時(shí)也能減輕各位中間件 &DBA 小伙伴的客服壓力。

一、前言

應(yīng)用連接數(shù)據(jù)庫(kù)基本上都是通過(guò)連接池去連接,比如常用的 HikariCP、Druid 等,在應(yīng)用運(yùn)行期間經(jīng)常會(huì)出現(xiàn)獲取連接很慢的場(chǎng)景,大多數(shù)同學(xué)都是一頭霧水,不知道從哪下手。而且很多時(shí)候都是偶發(fā)場(chǎng)景,讓人頭疼不已,別著急,本文帶你逐步剖析獲取連接慢的所有可能的原因,以及對(duì)應(yīng)的調(diào)優(yōu)手段,讓你成為連接池排障大師。

二、連接池監(jiān)控

排查問(wèn)題的前提是發(fā)現(xiàn)問(wèn)題,所以首先需要有連接池的詳細(xì)監(jiān)控,下面我們以 HikariCP 為例,簡(jiǎn)單介紹幾個(gè)常用的指標(biāo)的含義。

圖片圖片

圖片圖片

圖片圖片

對(duì)應(yīng)應(yīng)用程序比較敏感的時(shí)間就是獲取連接耗時(shí),因?yàn)樗峭降臅?huì)直接影響鏈路的RT,下面我們就來(lái)逐步分析造成這個(gè)獲取連接耗時(shí)較高的所有可能性以及解決方案。

三、排查思路

連接池存在等待連接

獲取連接耗時(shí)較高最直接的原因就是存在等待連接數(shù),這種情況直接觀測(cè)等待連接數(shù)的大盤即可

圖片圖片

那么又有哪幾種情況會(huì)導(dǎo)致存在等待連接數(shù)呢?

  • 連接池容量過(guò)小

如果日常的活躍連接數(shù)/總連接比例持續(xù)很高,或者 QPS * AVG-RT(s) > 連接總數(shù)說(shuō)明當(dāng)前連接池的最大連接數(shù)已經(jīng)不足以支撐當(dāng)前的流量,如何解決?

適當(dāng)增加連接池最大連接數(shù):連接數(shù)也不是越大越好,一般是根據(jù) CPU 核數(shù)決定,HikariCP 官方給出了一個(gè)公式可以做一下參考,最大連接數(shù)一般不要超過(guò) 50。

core_count 為core的數(shù)量 effective_spindle_count 為掛載的磁盤數(shù)量。
core_count 為core的數(shù)量 effective_spindle_count 為掛載的磁盤數(shù)量。
  • 應(yīng)用擴(kuò)容:如果連接數(shù)調(diào)大后,仍然無(wú)法解決,說(shuō)明單機(jī)的連接數(shù)已經(jīng)達(dá)到上限,需要對(duì)應(yīng)用進(jìn)行擴(kuò)容,但是需要注意擴(kuò)容節(jié)點(diǎn)的數(shù)量,單機(jī)連接數(shù)*節(jié)點(diǎn)數(shù)量不要超過(guò)數(shù)據(jù)庫(kù)支持的最大連接數(shù)

有慢查詢&長(zhǎng)事務(wù)

  • 慢SQL

慢 SQL 相對(duì)來(lái)說(shuō)比較好排查,數(shù)據(jù)庫(kù)或者數(shù)據(jù)庫(kù)中間件都有成熟的慢 SQL 采集工具。只需要分析一下指定時(shí)間段內(nèi)是否有慢 SQL 即可。 如果SQL 優(yōu)化空間比較低,可以把慢 SQL 和核心業(yè)務(wù)分 2 個(gè)數(shù)據(jù)源,防止慢 SQL 影響正常核心業(yè)務(wù)。

  • 長(zhǎng)事務(wù)

長(zhǎng)事務(wù)是很容易忽略的一種 case,可以通過(guò)觀測(cè)連接使用時(shí)間指標(biāo)和 SQL 耗時(shí)來(lái)分析,如果連接使用平均耗時(shí)遠(yuǎn)大于 SQL 平均耗時(shí),那么說(shuō)明有長(zhǎng)事務(wù)。還可以根據(jù) HikariCP 自帶的連接泄露檢測(cè)來(lái)分析,當(dāng)連接被借出后長(zhǎng)時(shí)間未歸還(超過(guò)配置的閾值 leak-detection-threshold=30000)會(huì)打印借出時(shí)的堆棧,可以幫助我們快速定位。

圖片圖片

還可以通過(guò) RDS 的 SQL 洞察來(lái)分析是否有長(zhǎng)事務(wù),如果使用 Spring+JDBC 管理事務(wù)的情況下,開啟事務(wù)的命令是 SET autocommit=0,提交事務(wù)是 commit,這里根據(jù)數(shù)據(jù)庫(kù)線程 ID 來(lái)逐個(gè)分析,提交事務(wù)的時(shí)間-開啟事務(wù)的時(shí)間=事務(wù)持續(xù)時(shí)間。

圖片

應(yīng)用負(fù)載過(guò)高

由于 HikariCP、Druid 在從連接池借出連接時(shí),會(huì)有一個(gè)同步探活的操作,比如直接 MySQL 的 PING 命令或執(zhí)行 select 'X' 等,因?yàn)橛芯W(wǎng)絡(luò) IO,所以這里會(huì)讓當(dāng)前線程進(jìn)入阻塞狀態(tài)讓出 CPU 時(shí)間片。

圖片圖片

在 CPU 繁忙時(shí),執(zhí)行完網(wǎng)絡(luò) IO 后等待獲取 CPU 時(shí)間片的時(shí)間較長(zhǎng),最終表現(xiàn)的結(jié)果就是獲取連接時(shí)間拉長(zhǎng)。這種 case 的分析手段比較簡(jiǎn)單,直接通過(guò)觀測(cè)應(yīng)用的 CPU 和 Load 指標(biāo)即可。

應(yīng)用STW

在獲取連接方法開始到結(jié)束期間,如果應(yīng)用發(fā)生了 STW,就會(huì)導(dǎo)致獲取連接耗時(shí)升高,需要結(jié)合 JVM 監(jiān)控 &GC 日志來(lái)分析,關(guān)于 GC 分析不是本文重點(diǎn),這里簡(jiǎn)單列舉幾個(gè)重點(diǎn)說(shuō)明一下(以 ZGC 舉例)。

  • JVM 監(jiān)控存在 Allocation Stall(垃圾回收阻塞,會(huì)暫停線程)或者暫停時(shí)間較長(zhǎng)。

圖片圖片

圖片圖片

  • GC 日志相對(duì)于監(jiān)控會(huì)更為準(zhǔn)確一點(diǎn),把日志文件直接丟到 https://gceasy.ycrash.cn/ 里面分析一下即可,會(huì)輸出詳細(xì)的報(bào)告,重點(diǎn)關(guān)注一下 STW 時(shí)間和分配阻塞。

圖片圖片

圖片圖片

網(wǎng)絡(luò)阻塞

這一類問(wèn)題比較難以排查,具有偶發(fā)性和難以觀測(cè)的特點(diǎn),網(wǎng)絡(luò)阻塞也分好幾種情況。

  • 網(wǎng)絡(luò)抖動(dòng)

這是最常見的一種情況,一般我們可以通過(guò)觀測(cè)應(yīng)用所在主機(jī)的 TCP 重傳監(jiān)控是否有尖刺,但這里要注意下,TCP 重傳不代表一定是網(wǎng)絡(luò)抖動(dòng),也可能是網(wǎng)絡(luò)帶寬打滿或者數(shù)據(jù)庫(kù) &DAL 異常。

圖片圖片

除了監(jiān)控還可以通過(guò)網(wǎng)絡(luò)循環(huán)抓包來(lái)分析(主要磁盤容量不要保留太多文件),可以參考以下命令。

抓取 3306 端口的網(wǎng)絡(luò)包,存儲(chǔ)到 3306.pcap 文件中,-C 50 -W 10 代表一個(gè)文件最大 50M,最多保留 10 個(gè) tcpdump -i eth0 port 3306 -w 3306.pcap -C 50 -W 10。

然后導(dǎo)入到 WireShark 工具中分析,重點(diǎn)關(guān)注 TCP Retransmission 即 TCP 重傳。

圖片圖片

  • 網(wǎng)絡(luò)阻塞

如機(jī)器帶寬打滿,具體表現(xiàn)也是 TCP 重傳,這里可以觀測(cè)機(jī)器的帶寬監(jiān)控和機(jī)器支持的最大帶寬做對(duì)比,看看是否超過(guò)限制。

圖片圖片

數(shù)據(jù)庫(kù)&數(shù)據(jù)庫(kù)中間件異常

當(dāng)數(shù)據(jù)庫(kù)或者數(shù)據(jù)庫(kù)中間件出現(xiàn)異常時(shí),對(duì)于上游應(yīng)用的表現(xiàn)大多數(shù)就是 SQL RT 增高、TCP 重傳。如果懷疑是數(shù)據(jù)庫(kù)或者數(shù)據(jù)庫(kù)中間件出現(xiàn)異常,可以先確定自己的應(yīng)用連的是哪個(gè)庫(kù),這里可以通過(guò)應(yīng)用監(jiān)控(上下游 -RDS)直觀的看到應(yīng)用連接的具體的庫(kù)信息,然后再觀測(cè)對(duì)應(yīng) RDS 和數(shù)據(jù)庫(kù)中間件的監(jiān)控進(jìn)一步分析。

圖片圖片

  • 如果是數(shù)據(jù)庫(kù)中間件域名,就可以看數(shù)據(jù)庫(kù)中間件的監(jiān)控大盤。

圖片圖片

如果數(shù)據(jù)庫(kù)中間件本身沒(méi)有異常,可以繼續(xù)下鉆到 RDS。

圖片圖片

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

重點(diǎn)觀測(cè) CPU內(nèi)存利用率 & IOPS 使用率,也可以框選指定時(shí)間段進(jìn)行自動(dòng)診斷。

圖片圖片

四、總結(jié)

本文列舉了幾乎所有可能導(dǎo)致連接池獲取連接慢的 case,相信看完的讀者以后再遇到此類問(wèn)題時(shí),再也不會(huì)一頭霧水了。學(xué)會(huì)自助排查,不光可以提升自己的排障能力,同時(shí)也能減輕各位中間件 &DBA 小伙伴的客服壓力。

參考文檔:https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing

責(zé)任編輯:武曉燕 來(lái)源: 得物技術(shù)
相關(guān)推薦

2021-07-07 10:28:09

分布式架構(gòu)系統(tǒng)

2021-10-29 11:30:31

補(bǔ)碼二進(jìn)制反碼

2025-05-23 10:00:00

網(wǎng)絡(luò)交換機(jī)STP

2020-01-18 14:11:13

數(shù)據(jù)庫(kù)線程技術(shù)

2019-12-30 15:30:13

連接池請(qǐng)求PHP

2018-08-13 09:20:21

NoSQLSQL數(shù)據(jù)

2020-07-29 09:21:34

Docker集群部署隔離環(huán)境

2021-07-05 22:22:24

協(xié)議MQTT

2017-12-17 20:17:23

NoSQLSQL數(shù)據(jù)

2024-02-28 08:18:13

Java日志項(xiàng)目

2011-06-01 13:54:10

MySQL

2019-06-24 08:17:55

CPUFullGCJava

2018-05-21 07:08:18

行為驅(qū)動(dòng)開發(fā)BDD編碼

2019-06-20 17:49:51

RPCHTTP協(xié)議

2014-08-04 14:38:25

LinuxToken

2013-04-17 09:16:37

2019-07-07 08:18:10

MySQL索引數(shù)據(jù)庫(kù)

2022-01-05 09:27:24

讀擴(kuò)散寫擴(kuò)散feed

2010-06-25 10:36:27

Java連接池

2009-06-17 09:59:46

Hibernate 連
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美在线观看一区 | 97碰碰碰| 亚洲国产成人精品女人 | 91原创视频 | 亚洲欧美精品国产一级在线 | 在线观看www高清视频 | 亚洲一区二区三区在线免费观看 | 中文字幕亚洲区一区二 | 亚洲性在线 | 欧美一区在线视频 | 欧美日韩一区二区三区四区五区 | 国产精品一区二区三区四区五区 | av在线三级 | 国产免费一二三区 | 欧美亚洲免费 | 国产精品日韩一区二区 | 国产精品一级 | 自拍视频一区二区三区 | 男女一区二区三区 | 国产精品久久二区 | 一级a性色生活片久久毛片波多野 | 一二三四在线视频观看社区 | 天堂综合网久久 | 亚洲精品视频导航 | 免费视频一区二区三区在线观看 | 精品美女在线观看 | 91久久久久久久久 | 日韩av免费看 | 久久精品成人 | 欧美性网 | 精品国产一区二区三区成人影院 | 在线日韩 | 国产精品中文字幕在线 | 成人av一区二区在线观看 | 亚洲精品久久久久久久久久久 | 91精品中文字幕一区二区三区 | 国产精品美女久久久久aⅴ国产馆 | 成年免费视频 | 538在线精品 | 日本成人二区 | 91视频在线看 |