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