服務器配置選擇測試和性能如何優(yōu)化?
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
聽多了架構優(yōu)化,接口優(yōu)化,數(shù)據(jù)庫優(yōu)化,今天我們來聊聊服務器優(yōu)化。 我們開發(fā)的軟件服務需要在服務器上運行,所以服務器性能代表了軟件的性能上限,因此服務器性能調(diào)優(yōu)是個十分重要的環(huán)節(jié),然而大部分同學對服務器性能調(diào)優(yōu)關注的較少,今天從3個部分對服務器性能調(diào)優(yōu)進行介紹,分別是:服務器配置選擇,服務器負載分析,服務器內(nèi)核參數(shù)調(diào)優(yōu)。 服務器配置選擇服務器一般是由CPU、內(nèi)存、磁盤和網(wǎng)卡組成,因此選擇服務器配置就是選擇CPU核數(shù)、內(nèi)存大小、磁盤大小及類型、網(wǎng)絡帶寬。但是,服務器配置的選擇是很難標準化的,也就是說很難推斷出“一臺需要達到1000TPS的后端服務器”的配置應該是什么樣的。因為軟件的最終運行性能與軟件的實現(xiàn)方式是緊密相關的,即使是同一個后端應用程序中的兩個接口,由于具體功能的差別,性能也會有所差別。 因此,服務器配置的選擇應該基于具體的測試結果。一開始可以選用配置較低的服務器做調(diào)優(yōu)和測試,并以該服務器的測試結果作為選擇服務器的依據(jù)。 以一個訂單業(yè)務為例,經(jīng)過測試后,一臺配置為4核 CPU 、16GB內(nèi)存、10Mbps帶寬、50GB機械磁盤的服務器的測試結果為:支持50并發(fā)量和300TPS吞吐量(增大并發(fā)量后會出現(xiàn)超時報錯)。而在壓力測試過程中, CPU 的使用率接近75%,內(nèi)存使用率在 50%以下,帶寬使用率在50%以下,除去日志以外無磁盤操作。 因此可以認為,一臺配置為4核 CPU ( CPU 使用率需要在75%以下)、8GB內(nèi)存(內(nèi)存使用率可以接近100%)、 5Mbps 帶寬(帶寬使用率可以接近100%)的服務器,可以滿足訂單接口支持50并發(fā)量、300TPS吞吐量的壓力。 如果需要達到200并發(fā)數(shù)、2400TPS吞吐量的目標的話,則需要8臺配置為4核 CPU 、8GB內(nèi)存、5Mbps帶寬的服務器,或者1臺配置為32核 CPU 、64GB內(nèi)存、40Mbps帶寬的服務器。當然,最終的服務器配置還是需要通過測試來驗證。
服務器負載分析在性能調(diào)優(yōu)時,需要先對服務器負載進行分析,通常而言,我們主要分析CPU使用率、內(nèi)存使用率、磁盤I/O,服務器負載和帶寬使用情況。 CPU使用率CPU使用率反應的是CPU的忙碌情況。當CPU達到100%時,部分進程會進入等待狀態(tài),CPU暫時不會對其進行處理。在實際情況下,為了應對一下突發(fā)性的請求壓力,服務器CPU使用率一般需要在75%以下。如果一臺服務器的CPU使用率多次高于75%,這時候就考慮增加新的服務器。 監(jiān)控CPU使用率我推薦大家使用htop工具,可以非常直觀看到CPU使用率、內(nèi)存使用率、及負載等信息。 使用htop查看CPU負載首先我們需要安裝htop,以centos為例,安裝命令如下:
安裝完成后我們就可以通過
輸入
如上圖所示,這是一個4核CPU服務器,在截圖的時候其中3核CPU使用率都超過了75%,再觀察一會發(fā)現(xiàn)所有CPU的使用率都在85%左右徘徊,說明CPU負載很高了,需要考慮增加新的服務器。 內(nèi)存使用率內(nèi)存使用率反應的是內(nèi)存的使用情況。內(nèi)存用于存放程序的代碼及數(shù)據(jù),一般分為物理內(nèi)存和虛擬內(nèi)存,其中物理內(nèi)存指的是服務器的內(nèi)存,而虛擬內(nèi)存指的是硬盤的一塊空間。當物理內(nèi)存使用率達到100%時將會使用虛擬內(nèi)存。需要注意的是,虛擬內(nèi)存的讀寫速度遠遠低于物理內(nèi)存,如果程序被放在了虛擬內(nèi)存執(zhí)行,那么程序的執(zhí)行效率會變得很低。 一般而言,服務器的物理內(nèi)存應該保持在80%以下,虛擬內(nèi)存使用率保持在0%。 服務器內(nèi)存使用情況還是可以通過hop工具進行查看
上面顯示了服務器的內(nèi)存使用情況:總內(nèi)存16G,使用了10G左右,內(nèi)存使用率62%,可以繼續(xù)使用,同時關閉了Swap虛擬內(nèi)存。 在下 磁盤I/O磁盤I/O指的是磁盤的讀寫,在軟件系統(tǒng)中,日志、文件操作、數(shù)據(jù)庫操作都會造成磁盤讀寫壓力,其中又以數(shù)據(jù)庫操作為甚,在高并發(fā)情況下往往數(shù)據(jù)庫會首先成為系統(tǒng)的瓶頸。 磁盤監(jiān)控我推薦大家使用iostat工具,可以很方便查看磁盤的使用情況。 使用iostat查看磁盤I/O首先我們需要安裝
安裝完成后我們就可以通過
輸入
平均負載平均負載指的是單位時間內(nèi)平均的活躍進程數(shù),是一個表示服務器負載的指標。一般情況下需要保證平均負載的值小于當前服務器的CPU核數(shù)。 同樣的,查看服務器平均負載我們也可以使用
一般情況下服務器的平均負載需要小于當前服務器的CPU核數(shù),為了應對突發(fā)狀況,服務器的平均負載應該在75%即3 以下,很顯然,上圖這臺服務器平均負載超過了75%,需要考慮提升性能了。 網(wǎng)絡使用情況網(wǎng)絡使用情況也是監(jiān)控的重要指標。當帶寬不足時會大大增加請求的響應時間。為了防止突發(fā)性并發(fā)壓力,應該保證服務器的帶寬使用率在80%以上。這里需要注意的是,物理網(wǎng)卡限制了服務器所能使用的最大寬帶。 查看網(wǎng)絡使用情況我推薦使用 使用nload查看網(wǎng)絡首先需要安裝nload,以centos為例
安裝完成后我們直接運行
輸入 指標說明:
服務器內(nèi)核參數(shù)調(diào)優(yōu)光有強大的物理性能是不夠的,還需要對內(nèi)核參數(shù)進行調(diào)優(yōu),這樣才能在高并發(fā)壓力下充分體現(xiàn)服務器應有的性能。當然,并不是所有的服務器都需要做高并發(fā)性能調(diào)優(yōu),一般來說,只需要對要處理高并發(fā)請求的服務器進行內(nèi)核參數(shù)調(diào)優(yōu)即可,常見的包括:前端服務器,后端服務器,數(shù)據(jù)庫服務器。 服務器常見的調(diào)優(yōu)參數(shù)主要有兩個:單個進程最大打開文件數(shù) 和 TCP相關設置。 單個進程最大打開文件數(shù)修改單個文件最大打開文件數(shù),只需要編輯
其中 TCP相關設置修改TCP相關參數(shù),可以優(yōu)化TCP高并發(fā)通信,編輯
閱讀原文:原文鏈接 該文章在 2025/7/1 23:09:26 編輯過 |
關鍵字查詢
相關文章
正在查詢... |