您好,登錄后才能下訂單哦!
(一)什么是服務(wù)器并發(fā)處理能力?
一臺(tái)服務(wù)器在單位時(shí)間里能處理的請(qǐng)求越多,服務(wù)器的能力越高,也就是宵云認(rèn)為的服務(wù)器并發(fā)處理能力越強(qiáng)
服務(wù)器的本質(zhì)工作就是,爭(zhēng)取以最快的速度將內(nèi)核緩沖區(qū)中的用戶請(qǐng)求數(shù)據(jù)一個(gè)不剩地都拿出來(lái),然后盡快處理,再將響應(yīng)數(shù)據(jù)放到一塊又能夠與發(fā)送數(shù)據(jù)的緩沖區(qū)中,接著處理下一撥請(qǐng)求。
(二)有什么方法衡量服務(wù)器并發(fā)處理能力?一,吞吐率
量化指標(biāo):吞吐率,單位時(shí)間里服務(wù)器處理的最大請(qǐng)求數(shù),單位req/s
再深入一些,HTTP請(qǐng)求通常是對(duì)不同資源的請(qǐng)求,也就是請(qǐng)求不同的URL,有的是請(qǐng)求圖片,有的是獲取動(dòng)態(tài)內(nèi)容,有的是靜態(tài)頁(yè)面,顯然這些請(qǐng)求所花費(fèi)的時(shí)間各不相同,而這些請(qǐng)求再不同時(shí)間的組成比例又是不確定的,所以實(shí)際情況下的吞吐率是非常復(fù)雜的。
正因?yàn)檫@些請(qǐng)求的性質(zhì)不同,所以服務(wù)器并發(fā)能力強(qiáng)弱關(guān)鍵在于如何正對(duì)不同的請(qǐng)求性質(zhì)來(lái)設(shè)計(jì)最優(yōu)并發(fā)策略。如一臺(tái)服務(wù)器處理諸多不同性質(zhì)的請(qǐng)求,在一定程度上使得服務(wù)器的性能無(wú)法充分發(fā)揮。而并發(fā)策略的設(shè)計(jì)就是在服務(wù)器同時(shí)處理較多請(qǐng)求時(shí),合理協(xié)調(diào)和充分利用CPU計(jì)算和I/O操作,使其在較大并發(fā)用戶數(shù)的情況下提供較高吞吐率。
另外,實(shí)際上多少用戶同時(shí)發(fā)來(lái)請(qǐng)求并不是服務(wù)器所能決定的,一旦實(shí)際并發(fā)用戶數(shù)過(guò)多,則勢(shì)必影響站點(diǎn)質(zhì)量。所以得出最大并發(fā)用戶數(shù)的意義,在于了解服務(wù)器的承載能力,并且結(jié)合用戶規(guī)??紤]適當(dāng)?shù)臄U(kuò)展方案。在考慮用戶模型時(shí),用戶訪問(wèn) web站點(diǎn)時(shí)通常使用瀏覽器,瀏覽器對(duì)于同一域名下URL的并發(fā)下載是多線程的,不過(guò)有最大限制的,所以前面說(shuō)到的最大并發(fā)數(shù),具體到真實(shí)的用戶,可能不是一對(duì)一的關(guān)系。而從服務(wù)器角度,實(shí)際并發(fā)用戶數(shù)的可以理解為服務(wù)器當(dāng)前維護(hù)的代表不同用戶的文件描述符總數(shù),也就是并發(fā)連接數(shù)。服務(wù)器一般會(huì)限制同時(shí)服務(wù)的最多用戶數(shù),比如apache的MaxClents參數(shù)。這里再深入一下,對(duì)于服務(wù)器來(lái)說(shuō),服務(wù)器希望支持高吞吐率,對(duì)于用戶來(lái)說(shuō),用戶只希望等待最少的時(shí)間,顯然,雙方不能滿足,所以雙方利益的平衡點(diǎn),就是我們希望的最大并發(fā)用戶數(shù)。
二,壓力測(cè)試
有一個(gè)原理一定要先搞清楚,假如100個(gè)用戶同時(shí)向服務(wù)器分別進(jìn)行10個(gè)請(qǐng)求,與1個(gè)用戶向服務(wù)器連續(xù)進(jìn)行1000次請(qǐng)求,對(duì)服務(wù)器的壓力是一樣嗎?實(shí)際上是不一樣的,因?qū)γ恳粋€(gè)用戶,連續(xù)發(fā)送請(qǐng)求實(shí)際上是指發(fā)送一個(gè)請(qǐng)求并接收到響應(yīng)數(shù)據(jù)后再發(fā)送下一個(gè)請(qǐng)求。這樣對(duì)于1個(gè)用戶向服務(wù)器連續(xù)進(jìn)行1000次請(qǐng)求, 任何時(shí)刻服務(wù)器的網(wǎng)卡接收緩沖區(qū)中只有1個(gè)請(qǐng)求,而對(duì)于100個(gè)用戶同時(shí)向服務(wù)器分別進(jìn)行10個(gè)請(qǐng)求,服務(wù)器的網(wǎng)卡接收緩沖區(qū)最多有100個(gè)等待處理的請(qǐng)求,顯然這時(shí)的服務(wù)器壓力更大。
壓力測(cè)試前提考慮的條件:(1) 并發(fā)用戶數(shù)(2) 總請(qǐng)求數(shù)(3) 請(qǐng)求資源描述
并發(fā)用戶數(shù)是指某一時(shí)刻同時(shí)向服務(wù)器發(fā)送請(qǐng)求的用戶總數(shù)。
壓力測(cè)試中關(guān)系的時(shí)間有細(xì)分以下2種,(1) 用戶平均請(qǐng)求等待時(shí)間(這里暫不把數(shù)據(jù)在網(wǎng)絡(luò)的傳輸時(shí)間,還有用戶PC本地的計(jì)算時(shí)間計(jì)算入內(nèi))(2) 服務(wù)器平均請(qǐng)求處理時(shí)間
用戶平均請(qǐng)求等待時(shí)間主要用于衡量服務(wù)器在一定并發(fā)用戶數(shù)下,單個(gè)用戶的服務(wù)質(zhì)量;而服務(wù)器平均請(qǐng)求處理時(shí)間就是吞吐率的倒數(shù),一般來(lái)說(shuō),用戶平均請(qǐng)求等待時(shí)間=服務(wù)器平均請(qǐng)求處理時(shí)間*并發(fā)用戶數(shù)
(三)怎么提高服務(wù)器的并發(fā)處理能力呢?一,提高CPU并發(fā)計(jì)算能力
服務(wù)器之所以可以同時(shí)處理多個(gè)請(qǐng)求,在于操作系統(tǒng)通過(guò)多執(zhí)行流體系設(shè)計(jì)使得多個(gè)任務(wù)可以輪流使用系統(tǒng)資源,這些資源包括CPU,內(nèi)存以及I/O. 這里的I/O主要指磁盤I/O, 和網(wǎng)絡(luò)I/O
(1)多進(jìn)程&多線程
多執(zhí)行流的一般實(shí)現(xiàn)就是進(jìn)程。多進(jìn)程的好處不僅在于CPU時(shí)間的輪流使用,還在于對(duì)CPU計(jì)算和I/O操作進(jìn)行很好的重疊利用,這里的I/O主要指磁盤I/O和網(wǎng)絡(luò)I/O. 實(shí)際上,大多數(shù)進(jìn)程的時(shí)間主要消耗在I/O操作上,現(xiàn)代計(jì)算機(jī)的DMA技術(shù)可以讓CPU不參與I/O操作的全過(guò)程,比如進(jìn)程通過(guò)系統(tǒng)調(diào)用,使得CPU向網(wǎng)卡或者磁盤等I/O設(shè)備發(fā)出指令,然后進(jìn)程被掛起,釋放出CPU資源,等待I/O設(shè)備完成工作后通過(guò)中斷來(lái)通知進(jìn)程重新就緒。對(duì)于單任務(wù)而言,CPU大部分時(shí)間空閑,這時(shí)候多進(jìn)程的作用尤為重要。
而且進(jìn)程的優(yōu)越性還在其相互獨(dú)立帶來(lái)的穩(wěn)定性和健壯性方面。
進(jìn)程的缺點(diǎn): 每個(gè)進(jìn)程都有自己的獨(dú)立空間和生命周期。當(dāng)子進(jìn)程被父進(jìn)程創(chuàng)建后,便將父進(jìn)程地址空間的所有數(shù)據(jù)復(fù)制到自己的地址空間中,完全繼承父進(jìn)程的上下文信息。進(jìn)程的創(chuàng)建使用fork()系統(tǒng)調(diào)用,還是有一定的開(kāi)銷的,這個(gè)開(kāi)銷若太頻繁,其可能成為影響性能的主要因素。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。