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

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

池化技術:如何減少頻繁創建數據庫連接的性能損耗?

來源: 責編: 時間:2023-10-06 19:19:35 342觀看
導讀來想象這樣一個場景,一天,公司 CEO 把你叫到會議室,告訴你公司看到了一個新的商業機會,希望你能帶領一位兄弟,迅速研發出一套面向某個垂直領域的電商系統。在資源匱乏、時間緊迫的情況下,我迅速采用了一種極為簡化的系統架

來想象這樣一個場景,一天,公司 CEO 把你叫到會議室,告訴你公司看到了一個新的商業機會,希望你能帶領一位兄弟,迅速研發出一套面向某個垂直領域的電商系統。7oM28資訊網——每日最新資訊28at.com

在資源匱乏、時間緊迫的情況下,我迅速采用了一種極為簡化的系統架構:一臺Web服務器負責運行業務代碼,而一臺獨立的數據庫服務器則存儲所有業務數據。這種簡單的架構設計允許我們盡快啟動項目并專注于核心功能的開發,以在有限的資源和時間內完成任務。7oM28資訊網——每日最新資訊28at.com

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

當垂直電商系統開始吸引更多用戶流量時,我們遇到了性能問題,主要是因為我們的數據庫連接方式。在原始設計中,每次查詢都需要建立和關閉數據庫連接,這導致了性能下降。為了解決這個問題,我們需要優化數據庫連接管理,考慮使用連接池技術來減少連接的頻繁建立和關閉,以提高系統的響應速度和性能。這將是一個重要的性能優化步驟,以適應不斷增長的用戶流量。7oM28資訊網——每日最新資訊28at.com

那么為什么頻繁創建連接會造成響應時間慢呢?來看一個實際的測試。7oM28資訊網——每日最新資訊28at.com

通過運行"tcpdump -i bond0 -nn -tttt port 4490"命令來捕獲線上MySQL連接的網絡包后,我們可以將MySQL連接過程簡化為兩個主要階段:7oM28資訊網——每日最新資訊28at.com

前三個數據包描繪了MySQL連接的起始階段。首先,客戶端發送了一個帶有SYN標志的數據包,表示要與服務器建立連接。然后,服務器回應客戶端,確認收到連接請求,并且也發送一個帶有SYN標志的數據包。最后,客戶端再次回應服務器,確認連接已建立。這個過程就是TCP協議中的三次握手,用于確保客戶端和服務器之間的連接正常建立。7oM28資訊網——每日最新資訊28at.com

第二部分是 MySQL 服務端校驗客戶端密碼的過程。其中第一個包是服務端發給客戶端要求認證的報文,第二和第三個包是客戶端將加密后的密碼發送給服務端的包,最后兩個包是服務端回給客戶端認證 OK 的報文。從圖中,你可以看到整個連接過程大概消耗了 4ms(969012-964904)。7oM28資訊網——每日最新資訊28at.com

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

根據我們的統計數據,單條SQL執行時間平均約為1毫秒,這意味著相對于SQL的執行來說,MySQL建立連接的過程所花費的時間較長。當請求量較小時,這并不會產生顯著影響,因為不管是建立連接還是執行SQL,都在毫秒級別完成。然而,一旦請求量增加,如果每次都按照原始方式建立連接,然后只執行一條SQL,那么每秒只能執行大約200次數據庫查詢,其中有四分之三的時間都花在了建立連接上。7oM28資訊網——每日最新資訊28at.com

那這時你要怎么做呢?

在進行了一番谷歌搜索后,我找到了一個相對簡單的解決方案:使用連接池來預先建立數據庫連接。通過這個改進,我們不再需要在每次使用數據庫時都頻繁地創建連接。調整后,系統的性能顯著提高,現在每秒可以執行1000次數據庫查詢,這是之前的5倍,從而更好地滿足了高請求量的需求。這種連接池的優化方式有效地減少了連接建立的開銷,提高了系統的響應速度和性能。7oM28資訊網——每日最新資訊28at.com

用連接池預先建立數據庫連接

雖然短時間解決了問題,不過你還是想徹底搞明白解決問題的核心原理,于是又開始補課。7oM28資訊網——每日最新資訊28at.com

在開發過程中,我們經常使用連接池,比如數據庫連接池、HTTP連接池和Redis連接池等。連接池的管理是連接池設計的核心,讓我以數據庫連接池為例,簡要說明一下關鍵點。7oM28資訊網——每日最新資訊28at.com

數據庫連接池有兩個關鍵配置參數:最小連接數和最大連接數。這些參數控制著連接池如何管理連接的獲取:7oM28資訊網——每日最新資訊28at.com

  • 如果當前連接數小于最小連接數,連接池會創建新的連接來處理數據庫請求。
  • 如果連接池中有空閑連接,它將會被重用。
  • 如果空閑連接池沒有可用連接,且當前連接數小于最大連接數,連接池會創建新的連接來處理請求。
  • 如果當前連接數已經達到最大連接數,連接池會根據設定的等待時間(比如C3P0連接池中的checkoutTimeout配置)等待已有連接變為可用。
  • 如果等待超過了設定的時間,連接池將向用戶拋出錯誤。

為了方便你理解記憶這個流程,我來舉個例子。7oM28資訊網——每日最新資訊28at.com

假設你在機場里運營一家按摩椅的小店,店里總共有10臺按摩椅(類似于數據庫連接池的最大連接數)。為了控制成本(按摩椅費電),通常你會保持4臺按摩椅開啟(最小連接數),其余6臺關閉。當顧客到來時,如果這4臺按摩椅中有空位,你可以直接為顧客提供服務。但如果所有4臺按摩椅都在使用中,那么你會開啟一臺新的按摩椅,直到所有10臺都被占用。7oM28資訊網——每日最新資訊28at.com

當所有10臺按摩椅都在使用中時,你會告知等待的顧客:“請稍等5分鐘,我保證在這段時間內會有按摩椅空出來。”然后第11位顧客開始等待。這時有兩種可能性:如果在5分鐘內有按摩椅空出來,顧客可以立即使用;但如果等待了5分鐘還沒有按摩椅空出來,你需要道歉并建議顧客去其他地方嘗試。7oM28資訊網——每日最新資訊28at.com

對于數據庫連接池,根據我的經驗,一般在線上我建議最小連接數控制在 10 左右,最大連接數控制在 20~30 左右即可。7oM28資訊網——每日最新資訊28at.com

用線程池預先創建線程

JDK 1.5引入的ThreadPoolExecutor是一種線程池的實現,它有兩個關鍵參數:coreThreadCount和maxThreadCount。它的工作原理類似于之前描述的按摩椅店模式:7oM28資訊網——每日最新資訊28at.com

  1. 如果線程池中的線程數量小于coreThreadCount,新任務到來時會創建新線程來處理。
  2. 如果線程數量超過coreThreadCount,任務會被放入一個隊列中,等待當前空閑的線程執行。
  3. 當隊列中的任務堆積滿了時,線程池會繼續創建線程,直到達到maxThreadCount。
  4. 一旦線程數量達到maxThreadCount,并且仍有新任務提交,那么這些新任務可能會被丟棄。

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

這個任務處理流程看似簡單,實際上有很多坑,你在使用的時候一定要注意。7oM28資訊網——每日最新資訊28at.com

JDK實現的ThreadPoolExecutor在處理任務時,更傾向于將任務暫存于隊列中而不是過早地創建新線程。這種方式更適合執行CPU密集型任務,即需要大量的CPU計算任務。為什么呢?7oM28資訊網——每日最新資訊28at.com

這是因為在執行CPU密集型任務時,CPU非常繁忙,因此只需要創建與CPU核心數相近的線程即可。過多的線程反而會導致線程上下文切換,降低任務執行效率。所以,當當前線程數超過核心線程數時,線程池不會立即創建更多線程,而是將任務放入隊列中等待核心線程的空閑。7oM28資訊網——每日最新資訊28at.com

但是,在我們通常的Web系統中,存在大量的IO操作,例如數據庫查詢、緩存查詢等。當任務執行IO操作時,CPU空閑下來,此時如果增加執行任務的線程而不是將任務暫存在隊列中,可以在單位時間內執行更多的任務,從而大大提高任務執行的吞吐量。這種情況下,Tomcat等Web服務器通常會對線程池進行定制,當線程數超過核心線程數時,它們會優先創建新線程,直到達到線程池的最大線程數,以更好地適應Web系統中的大量IO操作場景。你可以在實際應用中考慮類似的線程池調整來提高性能。7oM28資訊網——每日最新資訊28at.com

此外,要監控線程池中隊列的積壓情況也非常重要,特別是對于實時性要求較高的任務。我曾在實際項目中遇到過一個奇怪的問題:任務被提交到線程池后,長時間沒有被執行。起初,我懷疑是代碼中的bug,但經過排查發現,問題出在線程池的配置上,coreThreadCount和maxThreadCount設置得太小,導致任務在隊列中積壓。一旦我增大了這些參數,問題就得以解決。7oM28資訊網——每日最新資訊28at.com

從那以后,我將線程池隊列的任務積壓量視為系統監控的重要指標,將其顯示在監控大屏上。最后,我要強調,如果使用線程池,請不要使用無界隊列(即沒有設置固定大小的隊列)。有人可能認為無界隊列可以確保任務永遠不會丟失,只要任務對實時性要求不高,遲早會被執行完。然而,大量任務的堆積會占用大量內存空間。一旦內存空間用盡,將頻繁觸發Full GC,導致服務不可用。我曾經排查過一次因為Full GC引發的系統宕機,而它的根本原因就是系統中的一個線程池使用了無界隊列。因此,理解線程池的關鍵要點后,我確保在系統中設置了合適的配置,保障了系統的穩定性,成功完成了公司交給我的研發任務。7oM28資訊網——每日最新資訊28at.com

回顧連接池和線程池,它們都有一個共同特點:它們管理的對象,無論是連接還是線程,都需要耗費相對較多的時間和系統資源來創建。因此,我們將這些對象放入一個池中進行統一管理,以提高性能和資源的重復利用。這是一種常見的軟件設計思想,稱為池化技術。其核心思想是通過提前創建對象來減少頻繁創建對象的性能開銷,同時實現對象的統一管理,從而降低對象使用的成本。總之,池化技術帶來了許多好處。7oM28資訊網——每日最新資訊28at.com

然而,池化技術也存在一些缺點。例如,存儲池中的對象會占用額外的內存,如果對象不經常使用,可能會導致內存浪費。此外,池中的對象需要在系統啟動時預先創建,這可能增加系統啟動時間。然而,這些缺點相對于池化技術的優勢來說通常較小,只要我們明確需要頻繁創建和銷毀的對象在創建時確實具有高成本和資源消耗,并且這些對象確實會被頻繁使用,那么使用池化技術來優化是值得的。7oM28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-12135-0.html池化技術:如何減少頻繁創建數據庫連接的性能損耗?

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

上一篇: 推薦八個上熱搜的GitHub開源項目

下一篇: 計數排序(Counting Sort)詳解

標簽:
  • 熱門焦點
  • 小米官宣:2023年上半年出貨量中國第一!

    今日早間,小米電視官方微博帶來消息,稱2023年小米電視上半年出貨量達到了中國第一,同時還表示小米電視的巨屏風暴即將開始。“公布一個好消息2023年#小米電視上半年出貨量中國
  • 服務存儲設計模式:Cache-Aside模式

    Cache-Aside模式一種常用的緩存方式,通常是把數據從主存儲加載到KV緩存中,加速后續的訪問。在存在重復度的場景,Cache-Aside可以提升服務性能,降低底層存儲的壓力,缺點是緩存和底
  • 十個簡單但很有用的Python裝飾器

    裝飾器(Decorators)是Python中一種強大而靈活的功能,用于修改或增強函數或類的行為。裝飾器本質上是一個函數,它接受另一個函數或類作為參數,并返回一個新的函數或類。它們通常用
  • 每天一道面試題-CPU偽共享

    前言:了不起:又到了每天一到面試題的時候了!學弟,最近學習的怎么樣啊 了不起學弟:最近學習的還不錯,每天都在學習,每天都在進步! 了不起:那你最近學習的什么呢? 了不起學弟:最近在學習C
  • 品牌洞察丨服務本地,美團直播成效幾何?

    來源:17PR7月11日,美團App首頁推薦位出現“美團直播”的固定入口。在直播聚合頁面,外賣“神槍手”直播間、美團旅行直播間、美團買菜直播間等均已上線,同時
  • 網紅炒股不為了賺錢,那就是耍流氓!

    來源:首席商業評論6月26日高調宣布入市,網絡名嘴大v胡錫進居然進軍了股市。在一次財經媒體峰會上,幾個財經圈媒體大佬就“胡錫進炒股是否知道認真報道”展開討論。有
  • 滴滴違法違規被罰80.26億 共存在16項違法事實

    滴滴違法違規被罰80.26億 存在16項違法事實開始于2121年7月,歷經一年時間,網絡安全審查辦公室對“滴滴出行”網絡安全審查終于有了一個暫時的結束。據“網信
  • 英特爾Xe-HP項目終止,將專注Xe-HPC/HPG系列顯卡

    據10 月 31 日消息報道,英特爾高級副總裁兼加速計算系統和圖形事業部總經理 表示,Xe-HP“ Arctic Sound” 系列服務器 GPU 已經應用于 oneAPI devcloud 云服
  • 電博會與軟博會實現"線下+云端"的雙線融合

    在本次“電博會”與“軟博會”雙展會利好條件的加持下,既可以發揮展會拉動人流、信息流、資金流實現快速交互流動的作用,繼而推動區域經濟良性發展;又可以聚
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲尤物在线视频观看| 国产一区二区黄色| 免费观看成人鲁鲁鲁鲁鲁视频| 日韩天堂av| 一区二区三区你懂的| 99精品欧美一区二区三区| 亚洲美女视频网| 一本在线高清不卡dvd| 亚洲天堂久久| 欧美一区二区免费观在线| 日韩视频一区二区在线观看 | 欧美黄在线观看| 欧美激情一区三区| 国产精品极品美女粉嫩高清在线| 国产精品久久久久久久久| 国产日产亚洲精品| 亚洲成人影音| 日韩天堂在线观看| 一本在线高清不卡dvd | 亚洲免费不卡| 亚洲午夜电影| 欧美一区午夜精品| 美女啪啪无遮挡免费久久网站| 欧美大片va欧美在线播放| 欧美日韩不卡| 国产精品自拍三区| 国产一区二区三区四区五区美女| 亚洲成在人线av| 在线视频精品一区| 久久九九精品99国产精品| 欧美激情 亚洲a∨综合| 欧美性片在线观看| 激情五月婷婷综合| 一本久久知道综合久久| 久久av在线| 欧美日韩大片| 国产一区二三区| 亚洲国产成人在线视频| 一区二区三区欧美成人| 亚洲欧美日韩区| 久久男女视频| 欧美性猛交xxxx免费看久久久 | 亚洲欧洲av一区二区| 免费黄网站欧美| 国产精品麻豆欧美日韩ww| 国内精品久久久久影院色| 日韩亚洲欧美一区二区三区| 欧美一级在线播放| 免费观看一区| 国产精品一区二区黑丝| 亚洲国产免费看| 亚洲无线视频| 欧美福利小视频| 在线日韩中文| 久久精品视频一| 国产亚洲欧美一级| 亚洲在线一区二区| 欧美三级在线视频| 日韩午夜av在线| 欧美精品久久99| 亚洲日韩成人| 女女同性女同一区二区三区91| 韩国三级在线一区| 午夜视频在线观看一区二区| 欧美日韩综合另类| 9i看片成人免费高清| 欧美黄污视频| 亚洲毛片网站| 欧美日韩国产精品专区| 亚洲免费观看高清完整版在线观看熊 | 久久中文欧美| 韩国av一区二区三区| 欧美一区2区三区4区公司二百| 欧美日韩中文| 一二三区精品| 欧美日韩精品一区二区| 日韩亚洲综合在线| 欧美了一区在线观看| 亚洲欧洲综合另类| 欧美经典一区二区三区| 亚洲精品国产精品国自产观看| 99这里只有精品| 欧美日本亚洲视频| 99精品久久免费看蜜臀剧情介绍| 欧美激情欧美激情在线五月| 亚洲国产精品一区制服丝袜| 美女脱光内衣内裤视频久久影院| 伊人久久大香线| 乱中年女人伦av一区二区| 在线免费观看视频一区| 欧美www在线| 日韩视频一区二区三区| 欧美日韩三级一区二区| 中文在线资源观看网站视频免费不卡 | 亚洲精品美女| 欧美日韩亚洲一区二区三区| 一本久久a久久精品亚洲| 国产精品xxxxx| 亚洲综合成人婷婷小说| 国产情侣久久| 久久亚洲私人国产精品va媚药| 亚洲国产精品一区二区www| 欧美黄色大片网站| 亚洲视频你懂的| 国产精品三区www17con| 欧美在线地址| 亚洲国产成人精品女人久久久| 免费成人高清在线视频| 亚洲美女中文字幕| 国产精品国产a级| 久久成人精品无人区| 在线日韩av片| 欧美精彩视频一区二区三区| 99国产精品99久久久久久粉嫩| 欧美亚洲第一页| 91久久精品日日躁夜夜躁国产| 欧美精品成人一区二区在线观看| 亚洲午夜久久久久久久久电影院| 国产精品亚洲片夜色在线| 久久久精品日韩| 亚洲破处大片| 国产精品扒开腿做爽爽爽视频| 性亚洲最疯狂xxxx高清| 亚洲第一精品福利| 午夜电影亚洲| 在线看片欧美| 欧美日韩视频一区二区| 性欧美暴力猛交69hd| 在线免费观看日本欧美| 欧美日韩国产三区| 亚洲欧美日韩精品综合在线观看| 狠狠色综合播放一区二区| 欧美人成在线视频| 欧美在线一二三四区| 亚洲人成艺术| 国产视频一区二区在线观看 | 欧美一区二区在线播放| 亚洲国产国产亚洲一二三| 国产精品va在线播放我和闺蜜| 久久大综合网| 一本色道久久88精品综合| 国产在线精品自拍| 欧美日韩国产美女| 欧美一二三区在线观看| 亚洲国产欧美不卡在线观看| 欧美性生交xxxxx久久久| 久久在线免费| 亚洲一区三区电影在线观看| 在线观看91久久久久久| 国产精品免费网站| 欧美激情第五页| 久久精品二区亚洲w码| 一区二区三区精品久久久| 在线观看欧美激情| 国产精品亚洲аv天堂网| 欧美激情视频一区二区三区不卡| 欧美一区二视频| 一本色道久久综合狠狠躁篇怎么玩| 国模叶桐国产精品一区| 国产精品国产三级国产专播精品人 | 美女久久网站| 久久gogo国模啪啪人体图| 亚洲视频精选在线| 亚洲精品久久久久久久久久久| 国产亚洲亚洲| 国产精品人人做人人爽人人添| 欧美高清在线视频| 久久精品亚洲一区二区三区浴池| 亚洲一区二区欧美日韩| 亚洲精品一二三区| 伊人久久久大香线蕉综合直播| 国产麻豆视频精品| 欧美视频一区二区在线观看 | 欧美99在线视频观看| 久久精品理论片| 午夜久久99| 亚洲无毛电影| 日韩亚洲欧美综合| 亚洲国产欧洲综合997久久| 国产日产欧产精品推荐色| 国产精品美女久久久浪潮软件| 欧美激情第8页| 男人的天堂成人在线| 久久亚洲综合色| 欧美在线综合| 欧美在线综合| 欧美一区国产在线| 欧美一区二区黄| 欧美一区视频在线| 欧美一区二粉嫩精品国产一线天| 亚洲网站视频福利| 9l国产精品久久久久麻豆| 亚洲激情网站| 亚洲区第一页| 国产精品乱人伦一区二区 | 黄色成人av在线| 国内精品美女在线观看| 国产三级欧美三级| 国产精品一区一区三区| 国产精品影片在线观看| 国产老女人精品毛片久久| 国产精品久久久久久久app| 国产精品视频男人的天堂| 国产精品青草久久|