MySQL 真實生產環境下的數據庫機器配置如何規划


普通的Java應用系統部署在機器上能抗多少並發?

通常來說,根據我們的經驗值而言,Java應用系統部署的時候常選用的機器配置大致是2核4G和4核8G的較多一些,數據庫部署的時候常選用的機器配置最低在8核16G以上,正常在16核32G

那么以我們大量的高並發線上系統的生產經驗觀察下來而言,一般Java應用系統部署在4核8G的機器上,每秒鍾抗下500左右的並發訪問量,差不多是比較合適的,當然這個也不一定。

因為你得考慮一下,假設你每個請求花費1s可以處理完,那么你一台機器每秒也許只可以處理100個請求,但是如果你每個請求只要花費100ms就可以處理完,那么你一台機器每秒也許就可以處理幾百個請求。

所以一台機器能抗下每秒多少請求,往往是跟你每個請求處理耗費多長時間是關聯的,但是大體上來說,根據我們大量的經驗觀察而言,4核8G的機器部署普通的Java應用系統,每秒大致就是抗下幾百的並發訪問,從每秒一兩百請求到每秒七八百請求,都是有可能的,關鍵是看你每個請求處理需要耗費多長時間。

高並發場景下,數據庫應該用什么樣的機器?

對於數據庫而言,我們剛才也說過了,通常推薦的數據庫至少是選用8核16G以的機器,甚至是16核32G的機器更加合適一些。

因為大家要考慮一個問題,對於我們的Java應用系統,主要耗費時間的是Java系統和數據庫之間的網絡通信。

對Java系統自己而言,如果你僅僅只是系統內部運行一些普通的業務邏輯,純粹在自己內存中完成一些業務邏輯,這個性能是極高極高的。

對於你Java系統接收到的每個請求,耗時最多的還是發送網絡請求到數據庫上去,等待數據庫執行一些SQL語句,返回結果給你。

所以其實我們常說你有一個Java系統壓力很大,負載很高,但是其實你要明白一點,你這個Java系統其實主要的壓力和復雜都是集中在你依賴的那個MySQL數據庫上的!

因為你執行大量的增刪改查的SQL語句的時候,MySQL數據庫需要對內存和磁盤文件進行大量的IO操作,所以數據庫往往是負載最高的!這個問題我們在之前4篇文章里,通過MySQL數據庫架構原理的分析,都已經講解過了。

而你的Java系統一般並不需要你去直接大量的讀寫本地文件進行耗時的IO操作吧?是不是,想必做過Java開發的朋友一下子就會想明白這個道理。

然后通過我們之前的經驗而言,一般8核16G的機器部署的MySQL數據庫,每秒抗個一兩千並發請求是沒問題的,但是如果你的並發量再高一些,假設每秒有幾千並發請求,那么可能數據庫就會有點危險了,因為數據庫的CPU、磁盤、IO、內存的負載都會很高,弄不數據庫壓力過大就會宕機。

對於16核32G的機器部署的MySQL數據庫而言,每秒抗個兩三千,甚至三四千的並發請求也都是可以的,但是如果你達到每秒上萬請求,那么數據庫的CPU、磁盤、IO、內存的負載瞬間都會飆升到很高,數據庫也是可能會扛不住宕機的。

所以這就是對於數據庫,我們一般推薦選用的機器的配置,以及他大致可以抗下多高的並發請求量的經驗分享。

另外對於數據庫而言,如果可以的話,最好是采用SSD固態硬盤而不是普通的機械硬盤,因為數據庫最大的復雜就在於大量的磁盤IO,他需要大量的讀寫磁盤文件,所以如果能使用SSD固態硬盤,那么你的數據庫每秒能抗的並發請求量就會更高一些。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM