發(fā)布時(shí)間:2020-07-23
高并發(fā)系統(tǒng)的優(yōu)化一直以來都是一個(gè)很重要的問題,今天小編和大家聊聊高并發(fā)系統(tǒng)的一些性能調(diào)優(yōu)和優(yōu)化策略。
系統(tǒng)性能的關(guān)鍵指標(biāo)
吞吐量(Throughput) 系統(tǒng)單位時(shí)間內(nèi)處理任務(wù)的數(shù)量;
延遲(Latency) 系統(tǒng)對單個(gè)任務(wù)的平均響應(yīng)時(shí)間;
一般來說,考量一個(gè)系統(tǒng)的性能主要看這兩個(gè)指標(biāo)。而這兩個(gè)指標(biāo)之間又存在著一些聯(lián)系:對于指定的系統(tǒng)來說,系統(tǒng)的吞吐量越大,處理的請求越多,服務(wù)器就越繁忙,響應(yīng)速度就會慢下來;而延遲越低的系統(tǒng),能夠承載的吞吐量也相應(yīng)的更高一些。
一方面,我們需要提高系統(tǒng)的吞吐量,以便服務(wù)更多的用戶,另一方面我們需要將延遲控制在合理的范圍內(nèi),以保證服務(wù)質(zhì)量。
系統(tǒng)性能測試
業(yè)務(wù)場景
對于不同的業(yè)務(wù)系統(tǒng),可以接受的延遲(Latency)也有所不同,例如郵件服務(wù)可以忍受的延遲顯然要比Web服務(wù)高得多,所以首先我們需要根據(jù)業(yè)務(wù)場景的不同來定義理想的Latency值。
我們需要一個(gè)能夠制造高吞吐的工具來測試系統(tǒng)的性能,PerformanceRunner是國內(nèi)領(lǐng)先的支持http、https、websocket、tcp/ip、MQ等各種協(xié)議、10萬+海量并發(fā)、精準(zhǔn)可靠的性能測試工具,極大地降低了應(yīng)用系統(tǒng)運(yùn)行風(fēng)險(xiǎn)。
測試流程
測試的過程中需要不斷加大吞吐量,同時(shí)注意觀察服務(wù)端的負(fù)載,如果負(fù)載沒有問題,那就觀察延遲。一般這個(gè)過程需要反復(fù)很多次才能測出系統(tǒng)的極限值,而每次測試消耗的時(shí)間也比較長,需要耐心一些。
通用的系統(tǒng)參數(shù)調(diào)優(yōu)
Linux內(nèi)核默認(rèn)的參數(shù)考慮的是最通用的場景,不能夠滿足高并發(fā)系統(tǒng)的需求。
內(nèi)存:對于單個(gè)Socket連接來說消耗內(nèi)存不多,但是幾萬甚至幾十萬個(gè)連接疊加起來就非??捎^了,配置不當(dāng)會導(dǎo)致壓測端內(nèi)存成為瓶頸。
網(wǎng)絡(luò):有時(shí)候?yàn)榱吮苊饩W(wǎng)絡(luò)擁塞,需要限制壓測客戶機(jī)的帶寬,使流量以比較平滑的速率發(fā)送和接收。
定位系統(tǒng)性能瓶頸:當(dāng)系統(tǒng)吞吐和延遲上不去時(shí),首先需要定位問題,而不是急于修改代碼。常見的性能瓶頸包括CPU/內(nèi)存/磁盤IO/網(wǎng)絡(luò)帶寬等,其中每一項(xiàng)都有一到多個(gè)簡單實(shí)用的工具: 對于CPU和內(nèi)存,我們只要使用top就可以了;對于磁盤IO,可以用iotop或iostat;對于網(wǎng)絡(luò)帶寬,可以使用iftop。
如果依然沒能定位到問題,可能系統(tǒng)配置不當(dāng),參考通用的系統(tǒng)參數(shù)調(diào)優(yōu)。最后檢查代碼是否有單點(diǎn)瓶頸,例如程序被阻塞了:在筆者實(shí)測過程中,發(fā)現(xiàn)每個(gè)用戶創(chuàng)建會話進(jìn)程都需要對同一個(gè)supervisor發(fā)起同步請求,同時(shí)登錄的用戶數(shù)量很大時(shí),這些同步請求會排隊(duì),甚至引發(fā)超時(shí)。
以上就是小編收集的做壓力測試時(shí)遇到的一些問題以及應(yīng)對辦法,鑒于筆者水平有限,錯(cuò)漏難免。
更多并發(fā)測試推薦閱讀:
如何開展數(shù)據(jù)庫系統(tǒng)的性能需求分析?如何制定數(shù)據(jù)庫能力評估模型?
如何做接口壓力測試?壓力測試報(bào)告應(yīng)該包含哪些結(jié)果?
全鏈路性能需求分析的要點(diǎn)是什么?和傳統(tǒng)線下性能測試有什么區(qū)別
電話咨詢,400-035-7887,安排專業(yè)技術(shù)售前給您解答(產(chǎn)品試用、技術(shù)交流、服務(wù)咨詢和商務(wù)報(bào)價(jià))。
您的信息已成功提交!
我們的客服人員稍后會與您聯(lián)系