2016-10-30 分類(lèi): 網(wǎng)站建設(shè)
一、不同角度的網(wǎng)站性能普通用戶認(rèn)為的網(wǎng)站性能
網(wǎng)站性能對(duì)于普通用戶來(lái)說(shuō),最直接的體現(xiàn)就是響應(yīng)時(shí)間。用戶在瀏覽器上直觀感受到的網(wǎng)站響應(yīng)速度,即從客戶端發(fā)送請(qǐng)求,到服務(wù)器返回響應(yīng)內(nèi)容的時(shí)間。 做為網(wǎng)站開(kāi)發(fā)人員來(lái)說(shuō),網(wǎng)站性能通常會(huì)和普通的用戶理解的不一樣。 普通用戶感受到的網(wǎng)站性能,并不只是由網(wǎng)站服務(wù)器決定的。它還包括客戶端計(jì)算機(jī)和服務(wù)器通信的時(shí)間,網(wǎng)站服務(wù)器處理響應(yīng)的時(shí)間,客戶端瀏覽器構(gòu)造請(qǐng)求解析響應(yīng)數(shù)據(jù)的時(shí)間。甚至,不同的計(jì)算機(jī)性能、不同瀏覽器解析HTML的速度、不同網(wǎng)絡(luò)運(yùn)營(yíng)商提供的網(wǎng)絡(luò)帶寬房屋的差異,這些都會(huì)導(dǎo)致用戶感受到響應(yīng)時(shí)間,可能大于網(wǎng)站服務(wù)器處理請(qǐng)求的時(shí)間。
開(kāi)發(fā)人員認(rèn)為的網(wǎng)站性能
開(kāi)發(fā)人員關(guān)注的主要是服務(wù)器應(yīng)用程序本身,以及相關(guān)配套系統(tǒng)的性能。包括并發(fā)處理能力、系統(tǒng)穩(wěn)定性、響應(yīng)延遲等技術(shù)指標(biāo)。 對(duì)性能優(yōu)化的主要手段,包括使用緩存加速數(shù)據(jù)讀取,使用集群提高數(shù)據(jù)吞吐能力,使用異步消息加快請(qǐng)求響應(yīng),使用代碼改善程序性能。
運(yùn)維人員認(rèn)為的網(wǎng)站性能
運(yùn)維人員關(guān)注的主要是服務(wù)器基礎(chǔ)設(shè)施和資源利用率。如服務(wù)器硬件的配置、網(wǎng)絡(luò)運(yùn)營(yíng)商的帶寬、數(shù)據(jù)中心的網(wǎng)絡(luò)架構(gòu)等。主要優(yōu)化手段有使用高性價(jià)比的服務(wù)器、建設(shè)優(yōu)化骨干網(wǎng)絡(luò)、利用虛擬化技術(shù)優(yōu)化資源利用等。
二、性能的指標(biāo)
從開(kāi)發(fā)人員的角度,網(wǎng)站性能的指標(biāo)主要有并發(fā)數(shù)和響應(yīng)時(shí)間。
并發(fā)數(shù)
并發(fā)數(shù)是指系統(tǒng)能夠處理請(qǐng)求的數(shù)量,對(duì)于網(wǎng)站服務(wù)器而言,并發(fā)數(shù)也就是網(wǎng)站并發(fā)用戶數(shù),指同時(shí)提交請(qǐng)求的用戶數(shù)目。 與并發(fā)數(shù)相對(duì)應(yīng)的還有網(wǎng)站在線用戶數(shù)(登錄用戶數(shù))和網(wǎng)站用戶數(shù)(一般指注冊(cè)用戶數(shù))。他們的關(guān)系一般是:網(wǎng)站用戶數(shù)>網(wǎng)站用戶在線數(shù)>網(wǎng)站用戶并發(fā)數(shù)
響應(yīng)時(shí)間
響應(yīng)時(shí)間是最重要的性能指標(biāo),直接反映了系統(tǒng)的快慢。
常見(jiàn)的系統(tǒng)操作響應(yīng)時(shí)間[td]
操作 響應(yīng)時(shí)間
打開(kāi)一個(gè)網(wǎng)站 幾秒
在數(shù)據(jù)庫(kù)中查詢一條記錄(有索引) 十幾毫秒
機(jī)械磁盤(pán)一次尋址定位 4毫秒
從機(jī)械磁盤(pán)順序讀取1MB數(shù)據(jù) 2毫秒
從SSD磁盤(pán)順序讀取1MB數(shù)據(jù) 0.3毫秒
從遠(yuǎn)程分布式緩存Redis讀取一個(gè)數(shù)據(jù) 0.5毫秒
從內(nèi)存中讀取1MB數(shù)據(jù) 十幾微秒
網(wǎng)絡(luò)傳輸2KB數(shù)據(jù) 1微秒
三、性能的優(yōu)化
對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),網(wǎng)站性能優(yōu)化一般包括Web前端性能優(yōu)化、應(yīng)用服務(wù)器性能優(yōu)化、存儲(chǔ)服務(wù)器性能優(yōu)化三類(lèi)。
Web前端性能優(yōu)化
1、減少http請(qǐng)求 http協(xié)議是無(wú)狀態(tài)的應(yīng)用層協(xié)議,意味著每次http請(qǐng)求都需要建立通信鏈路、進(jìn)行數(shù)據(jù)傳輸,而在服務(wù)器端,每個(gè)http請(qǐng)求都需要啟動(dòng)獨(dú)立的線程去處理。減少http請(qǐng)求的數(shù)目可有效提高訪問(wèn)性能。 減少http的主要手段是合并CSS、合并javascript、合并圖片。 2、使用瀏覽器緩存 對(duì)一個(gè)網(wǎng)站而言,CSS、javascript、logo、圖標(biāo),這些靜態(tài)資源文件更新的頻率都比較低,而這些文件又幾乎是每次http請(qǐng)求都需要的。如果將這些文件緩存在瀏覽器中,可以極好的改善性能。通過(guò)設(shè)置http頭中的cache-control和expires的屬性,可設(shè)定瀏覽器緩存,緩存時(shí)間可以自定義。 3、啟用壓縮 在服務(wù)器端對(duì)文件進(jìn)行壓縮,在瀏覽器端對(duì)文件解壓縮,可有效減少通信傳輸?shù)臄?shù)據(jù)量。如果可以的話,盡可能的將外部的腳本、樣式進(jìn)行合并,多個(gè)合為一個(gè)。文本文件的壓縮效率可達(dá)到80%以上,因此HTML、CSS、javascript文件啟用GZip壓縮可達(dá)到較好的效果。但是壓縮對(duì)服務(wù)器和瀏覽器產(chǎn)生一定的壓力,在網(wǎng)絡(luò)帶寬良好,而服務(wù)器資源不足的情況下要綜合考慮。 4、CSS放在頁(yè)面最上部,javascript放在頁(yè)面最下面 瀏覽器會(huì)在下載完成全部CSS之后才對(duì)整個(gè)頁(yè)面進(jìn)行渲染,因此最好的做法是將CSS放在頁(yè)面最上面,讓瀏覽器盡快下載CSS。 Javascript則相反,瀏覽器在加載javascript后立即執(zhí)行,有可能會(huì)阻塞整個(gè)頁(yè)面,造成頁(yè)面顯示緩慢,因此javascript最好放在頁(yè)面最下面。
應(yīng)用服務(wù)器優(yōu)化
應(yīng)用服務(wù)器也就是處理網(wǎng)站業(yè)務(wù)的服務(wù)器,網(wǎng)站的業(yè)務(wù)代碼都部署在這里,主要優(yōu)化方案有緩存、異步、集群等。 1、合理使用緩存 當(dāng)網(wǎng)站遇到性能瓶頸時(shí),第一個(gè)解決方案一般是緩存。在整個(gè)網(wǎng)站應(yīng)用中,緩存幾乎無(wú)處不在,無(wú)論是客戶端,還是應(yīng)用服務(wù)器,或是數(shù)據(jù)庫(kù)服務(wù)器。在客戶端和服務(wù)器的交互中,無(wú)論是數(shù)據(jù)、文件都可以緩存,合理使用緩存對(duì)網(wǎng)站性能優(yōu)化非常重要。 緩存一般用來(lái)存放那些讀寫(xiě)次數(shù)比較高,變化較少的數(shù)據(jù),比如網(wǎng)站首頁(yè)的信息、商品的信息等。應(yīng)用程序讀取數(shù)據(jù)時(shí),一般是先從緩存中讀取,如果讀取不到或數(shù)據(jù)已失效,再訪問(wèn)磁盤(pán)數(shù)據(jù)庫(kù),并將數(shù)據(jù)再次寫(xiě)入緩存。 緩存的基本原理是將數(shù)據(jù)存儲(chǔ)在相對(duì)有較高訪問(wèn)速度的存儲(chǔ)介質(zhì)中,比如內(nèi)存。一方面緩存訪問(wèn)速度快,另一方面,如果緩存的數(shù)據(jù)是需要經(jīng)過(guò)計(jì)算處理得到的,那使用緩存還可以減少服務(wù)器處理數(shù)據(jù)的計(jì)算時(shí)間。 使用緩存并不是沒(méi)有缺陷:內(nèi)存資源是比較寶貴的,不可能將所有數(shù)據(jù)都緩存,一般頻繁修改的數(shù)據(jù)不建議使用緩存,這會(huì)導(dǎo)致數(shù)據(jù)不一致。 網(wǎng)站數(shù)據(jù)緩存一般遵循二八定律,即80%的訪問(wèn)都在20%的數(shù)據(jù)上。所以,一般將這20%的數(shù)據(jù)緩存,可以起到改善系統(tǒng)性能,提高服務(wù)器讀取效率。 2、異步操作 使用消息隊(duì)列將調(diào)用異步化,可以改善網(wǎng)站系統(tǒng)的性能。 在不使用消息隊(duì)列的情況下,用戶的請(qǐng)求直接寫(xiě)入數(shù)據(jù)庫(kù),在高并發(fā)的情況下,會(huì)對(duì)數(shù)據(jù)庫(kù)造成非常大的壓力,也會(huì)延遲響應(yīng)時(shí)間。 在使用消息隊(duì)列后,用戶請(qǐng)求的數(shù)據(jù)會(huì)發(fā)送給消息隊(duì)列服務(wù)器,消息隊(duì)列服務(wù)器會(huì)開(kāi)啟進(jìn)程,將數(shù)據(jù)異步寫(xiě)入數(shù)據(jù)庫(kù)。消息隊(duì)列服務(wù)器的處理速度遠(yuǎn)超過(guò)數(shù)據(jù)庫(kù),因此用戶的響應(yīng)延遲可得到改善。 消息隊(duì)列可以將短時(shí)間內(nèi)的高并發(fā)產(chǎn)生的事務(wù)消息,存儲(chǔ)在消息隊(duì)列中,從而提高網(wǎng)站的并發(fā)處理能力。在電商網(wǎng)站的促銷(xiāo)活動(dòng)中,合理使用消息隊(duì)列,可以抵御短時(shí)間內(nèi)用戶高并發(fā)的沖擊。 3、使用集群 在網(wǎng)站高并發(fā)訪問(wèn)的情況下,使用負(fù)載均衡技術(shù),可以為一個(gè)應(yīng)用構(gòu)建由多臺(tái)服務(wù)器組成的服務(wù)器集群,將并發(fā)訪問(wèn)請(qǐng)求,分發(fā)到多臺(tái)服務(wù)器上處理,避免單一服務(wù)器因負(fù)載過(guò)大,而導(dǎo)致響應(yīng)延遲。 4、代碼優(yōu)化 網(wǎng)站的業(yè)務(wù)邏輯代碼主要部署在應(yīng)用服務(wù)器上,需要處理復(fù)雜的并發(fā)事務(wù)。合理優(yōu)化業(yè)務(wù)代碼,也可以改善網(wǎng)站性能。 任何web網(wǎng)站都會(huì)遇到多用戶的并發(fā)訪問(wèn),大型網(wǎng)站的并發(fā)用戶會(huì)達(dá)到數(shù)萬(wàn)。每個(gè)用戶請(qǐng)求都會(huì)創(chuàng)建一個(gè)獨(dú)立的系統(tǒng)進(jìn)程去處理。由于線程比進(jìn)程更輕量,占用資源更少,所以,目前主流的web應(yīng)用服務(wù)器都采用多線程的方式,處理并發(fā)用戶的請(qǐng)求,因此,網(wǎng)站開(kāi)發(fā)多數(shù)都是多線程編程。 使用多線程的另一個(gè)原因是服務(wù)器有多個(gè)CPU,現(xiàn)在手機(jī)都到了8核CPU的時(shí)代,一般的服務(wù)器至少是16核CPU,要想大限度的使用這些CPU,必須啟動(dòng)多線程。 那么,啟動(dòng)多少線程合適呢? 啟動(dòng)線程數(shù)和CPU內(nèi)核數(shù)量成正比,和IO等待時(shí)間成正比。如果都是計(jì)算型的任務(wù),那么線程數(shù)最多不要超過(guò)CPU內(nèi)核數(shù),因?yàn)閱?dòng)再多,CPU也來(lái)不及調(diào)用。如果任務(wù)是等待讀寫(xiě)磁盤(pán)、網(wǎng)絡(luò)響應(yīng),那么多啟動(dòng)線程會(huì)提高任務(wù)并發(fā)度,提高服務(wù)器性能。 或者用個(gè)簡(jiǎn)化的公式來(lái)描述: 啟動(dòng)線程數(shù) = (任務(wù)執(zhí)行時(shí)間/(任務(wù)執(zhí)行事件 - IO等待時(shí)間)) * CPU內(nèi)核數(shù) 5、存儲(chǔ)優(yōu)化 數(shù)據(jù)的讀寫(xiě)是網(wǎng)站處理并發(fā)訪問(wèn)的另一瓶頸。使用緩存雖然可以解決一部分?jǐn)?shù)據(jù)讀寫(xiě)壓力,但很多時(shí)候,磁盤(pán)仍然是系統(tǒng)最嚴(yán)重的瓶頸。而且磁盤(pán)是網(wǎng)站最重要的資產(chǎn),磁盤(pán)的可用性和容錯(cuò)性也至關(guān)重要。 機(jī)械硬盤(pán)和固態(tài)硬盤(pán) 機(jī)械硬盤(pán)是目前最常用的硬盤(pán),通過(guò)馬達(dá)帶動(dòng)磁頭到指定磁盤(pán)的位置訪問(wèn)數(shù)據(jù),每次訪問(wèn)數(shù)據(jù)都需要移動(dòng)磁頭,在讀取連續(xù)數(shù)據(jù)和隨機(jī)訪問(wèn)上,磁頭移動(dòng)的次數(shù)相差巨大,因此機(jī)械硬盤(pán)的性能表現(xiàn)差別巨大,讀寫(xiě)效率較低。而在網(wǎng)站應(yīng)用中,大多數(shù)數(shù)據(jù)的訪問(wèn)都是隨機(jī)的,在這種情況下,固態(tài)硬盤(pán)具有更高的性能。但目前固態(tài)硬盤(pán)在工藝上、數(shù)據(jù)可靠性上還有待提升,因此固態(tài)硬盤(pán)的使用尚未普及,從發(fā)展趨勢(shì)看,取代機(jī)械硬盤(pán)應(yīng)該是遲早的事情。
新聞名稱:淺析淺析網(wǎng)站性能
分享地址:http://m.newbst.com/news42/54792.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、云服務(wù)器、App設(shè)計(jì)、自適應(yīng)網(wǎng)站、商城網(wǎng)站、全網(wǎng)營(yíng)銷(xiāo)推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容