淺析淺析網(wǎng)站性能

2016-10-30    分類: 網(wǎng)站建設(shè)

一、不同角度的網(wǎng)站性能普通用戶認(rèn)為的網(wǎng)站性能

網(wǎng)站性能對于普通用戶來說,最直接的體現(xiàn)就是響應(yīng)時(shí)間。用戶在瀏覽器上直觀感受到的網(wǎng)站響應(yīng)速度,即從客戶端發(fā)送請求,到服務(wù)器返回響應(yīng)內(nèi)容的時(shí)間。 做為網(wǎng)站開發(fā)人員來說,網(wǎng)站性能通常會和普通的用戶理解的不一樣。 普通用戶感受到的網(wǎng)站性能,并不只是由網(wǎng)站服務(wù)器決定的。它還包括客戶端計(jì)算機(jī)和服務(wù)器通信的時(shí)間,網(wǎng)站服務(wù)器處理響應(yīng)的時(shí)間,客戶端瀏覽器構(gòu)造請求解析響應(yīng)數(shù)據(jù)的時(shí)間。甚至,不同的計(jì)算機(jī)性能、不同瀏覽器解析HTML的速度、不同網(wǎng)絡(luò)運(yùn)營商提供的網(wǎng)絡(luò)帶寬房屋的差異,這些都會導(dǎo)致用戶感受到響應(yīng)時(shí)間,可能大于網(wǎng)站服務(wù)器處理請求的時(shí)間。

開發(fā)人員認(rèn)為的網(wǎng)站性能

開發(fā)人員關(guān)注的主要是服務(wù)器應(yīng)用程序本身,以及相關(guān)配套系統(tǒng)的性能。包括并發(fā)處理能力、系統(tǒng)穩(wěn)定性、響應(yīng)延遲等技術(shù)指標(biāo)。 對性能優(yōu)化的主要手段,包括使用緩存加速數(shù)據(jù)讀取,使用集群提高數(shù)據(jù)吞吐能力,使用異步消息加快請求響應(yīng),使用代碼改善程序性能。

運(yùn)維人員認(rèn)為的網(wǎng)站性能

運(yùn)維人員關(guān)注的主要是服務(wù)器基礎(chǔ)設(shè)施和資源利用率。如服務(wù)器硬件的配置、網(wǎng)絡(luò)運(yùn)營商的帶寬、數(shù)據(jù)中心的網(wǎng)絡(luò)架構(gòu)等。主要優(yōu)化手段有使用高性價(jià)比的服務(wù)器、建設(shè)優(yōu)化骨干網(wǎng)絡(luò)、利用虛擬化技術(shù)優(yōu)化資源利用等。

二、性能的指標(biāo)

從開發(fā)人員的角度,網(wǎng)站性能的指標(biāo)主要有并發(fā)數(shù)和響應(yīng)時(shí)間。

并發(fā)數(shù)

并發(fā)數(shù)是指系統(tǒng)能夠處理請求的數(shù)量,對于網(wǎng)站服務(wù)器而言,并發(fā)數(shù)也就是網(wǎng)站并發(fā)用戶數(shù),指同時(shí)提交請求的用戶數(shù)目。 與并發(fā)數(shù)相對應(yīng)的還有網(wǎng)站在線用戶數(shù)(登錄用戶數(shù))和網(wǎng)站用戶數(shù)(一般指注冊用戶數(shù))。他們的關(guān)系一般是:網(wǎng)站用戶數(shù)>網(wǎng)站用戶在線數(shù)>網(wǎng)站用戶并發(fā)數(shù)

響應(yīng)時(shí)間

響應(yīng)時(shí)間是最重要的性能指標(biāo),直接反映了系統(tǒng)的快慢。

常見的系統(tǒng)操作響應(yīng)時(shí)間[td]

操作 響應(yīng)時(shí)間

打開一個(gè)網(wǎng)站 幾秒

在數(shù)據(jù)庫中查詢一條記錄(有索引) 十幾毫秒

機(jī)械磁盤一次尋址定位 4毫秒

從機(jī)械磁盤順序讀取1MB數(shù)據(jù) 2毫秒

從SSD磁盤順序讀取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)化

對于開發(fā)人員來說,網(wǎng)站性能優(yōu)化一般包括Web前端性能優(yōu)化、應(yīng)用服務(wù)器性能優(yōu)化、存儲服務(wù)器性能優(yōu)化三類。

Web前端性能優(yōu)化

1、減少http請求 http協(xié)議是無狀態(tài)的應(yīng)用層協(xié)議,意味著每次http請求都需要建立通信鏈路、進(jìn)行數(shù)據(jù)傳輸,而在服務(wù)器端,每個(gè)http請求都需要啟動獨(dú)立的線程去處理。減少http請求的數(shù)目可有效提高訪問性能。 減少http的主要手段是合并CSS、合并javascript、合并圖片。 2、使用瀏覽器緩存 對一個(gè)網(wǎng)站而言,CSS、javascript、logo、圖標(biāo),這些靜態(tài)資源文件更新的頻率都比較低,而這些文件又幾乎是每次http請求都需要的。如果將這些文件緩存在瀏覽器中,可以極好的改善性能。通過設(shè)置http頭中的cache-control和expires的屬性,可設(shè)定瀏覽器緩存,緩存時(shí)間可以自定義。 3、啟用壓縮 在服務(wù)器端對文件進(jìn)行壓縮,在瀏覽器端對文件解壓縮,可有效減少通信傳輸?shù)臄?shù)據(jù)量。如果可以的話,盡可能的將外部的腳本、樣式進(jìn)行合并,多個(gè)合為一個(gè)。文本文件的壓縮效率可達(dá)到80%以上,因此HTML、CSS、javascript文件啟用GZip壓縮可達(dá)到較好的效果。但是壓縮對服務(wù)器和瀏覽器產(chǎn)生一定的壓力,在網(wǎng)絡(luò)帶寬良好,而服務(wù)器資源不足的情況下要綜合考慮。 4、CSS放在頁面最上部,javascript放在頁面最下面 瀏覽器會在下載完成全部CSS之后才對整個(gè)頁面進(jìn)行渲染,因此最好的做法是將CSS放在頁面最上面,讓瀏覽器盡快下載CSS。 Javascript則相反,瀏覽器在加載javascript后立即執(zhí)行,有可能會阻塞整個(gè)頁面,造成頁面顯示緩慢,因此javascript最好放在頁面最下面。

應(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)用中,緩存幾乎無處不在,無論是客戶端,還是應(yīng)用服務(wù)器,或是數(shù)據(jù)庫服務(wù)器。在客戶端和服務(wù)器的交互中,無論是數(shù)據(jù)、文件都可以緩存,合理使用緩存對網(wǎng)站性能優(yōu)化非常重要。 緩存一般用來存放那些讀寫次數(shù)比較高,變化較少的數(shù)據(jù),比如網(wǎng)站首頁的信息、商品的信息等。應(yīng)用程序讀取數(shù)據(jù)時(shí),一般是先從緩存中讀取,如果讀取不到或數(shù)據(jù)已失效,再訪問磁盤數(shù)據(jù)庫,并將數(shù)據(jù)再次寫入緩存。 緩存的基本原理是將數(shù)據(jù)存儲在相對有較高訪問速度的存儲介質(zhì)中,比如內(nèi)存。一方面緩存訪問速度快,另一方面,如果緩存的數(shù)據(jù)是需要經(jīng)過計(jì)算處理得到的,那使用緩存還可以減少服務(wù)器處理數(shù)據(jù)的計(jì)算時(shí)間。 使用緩存并不是沒有缺陷:內(nèi)存資源是比較寶貴的,不可能將所有數(shù)據(jù)都緩存,一般頻繁修改的數(shù)據(jù)不建議使用緩存,這會導(dǎo)致數(shù)據(jù)不一致。 網(wǎng)站數(shù)據(jù)緩存一般遵循二八定律,即80%的訪問都在20%的數(shù)據(jù)上。所以,一般將這20%的數(shù)據(jù)緩存,可以起到改善系統(tǒng)性能,提高服務(wù)器讀取效率。 2、異步操作 使用消息隊(duì)列將調(diào)用異步化,可以改善網(wǎng)站系統(tǒng)的性能。 在不使用消息隊(duì)列的情況下,用戶的請求直接寫入數(shù)據(jù)庫,在高并發(fā)的情況下,會對數(shù)據(jù)庫造成非常大的壓力,也會延遲響應(yīng)時(shí)間。 在使用消息隊(duì)列后,用戶請求的數(shù)據(jù)會發(fā)送給消息隊(duì)列服務(wù)器,消息隊(duì)列服務(wù)器會開啟進(jìn)程,將數(shù)據(jù)異步寫入數(shù)據(jù)庫。消息隊(duì)列服務(wù)器的處理速度遠(yuǎn)超過數(shù)據(jù)庫,因此用戶的響應(yīng)延遲可得到改善。 消息隊(duì)列可以將短時(shí)間內(nèi)的高并發(fā)產(chǎn)生的事務(wù)消息,存儲在消息隊(duì)列中,從而提高網(wǎng)站的并發(fā)處理能力。在電商網(wǎng)站的促銷活動中,合理使用消息隊(duì)列,可以抵御短時(shí)間內(nèi)用戶高并發(fā)的沖擊。 3、使用集群 在網(wǎng)站高并發(fā)訪問的情況下,使用負(fù)載均衡技術(shù),可以為一個(gè)應(yīng)用構(gòu)建由多臺服務(wù)器組成的服務(wù)器集群,將并發(fā)訪問請求,分發(fā)到多臺服務(wù)器上處理,避免單一服務(wù)器因負(fù)載過大,而導(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)站都會遇到多用戶的并發(fā)訪問,大型網(wǎng)站的并發(fā)用戶會達(dá)到數(shù)萬。每個(gè)用戶請求都會創(chuàng)建一個(gè)獨(dú)立的系統(tǒng)進(jìn)程去處理。由于線程比進(jìn)程更輕量,占用資源更少,所以,目前主流的web應(yīng)用服務(wù)器都采用多線程的方式,處理并發(fā)用戶的請求,因此,網(wǎng)站開發(fā)多數(shù)都是多線程編程。 使用多線程的另一個(gè)原因是服務(wù)器有多個(gè)CPU,現(xiàn)在手機(jī)都到了8核CPU的時(shí)代,一般的服務(wù)器至少是16核CPU,要想大限度的使用這些CPU,必須啟動多線程。 那么,啟動多少線程合適呢? 啟動線程數(shù)和CPU內(nèi)核數(shù)量成正比,和IO等待時(shí)間成正比。如果都是計(jì)算型的任務(wù),那么線程數(shù)最多不要超過CPU內(nèi)核數(shù),因?yàn)閱釉俣?,CPU也來不及調(diào)用。如果任務(wù)是等待讀寫磁盤、網(wǎng)絡(luò)響應(yīng),那么多啟動線程會提高任務(wù)并發(fā)度,提高服務(wù)器性能。 或者用個(gè)簡化的公式來描述: 啟動線程數(shù) = (任務(wù)執(zhí)行時(shí)間/(任務(wù)執(zhí)行事件 - IO等待時(shí)間)) * CPU內(nèi)核數(shù) 5、存儲優(yōu)化 數(shù)據(jù)的讀寫是網(wǎng)站處理并發(fā)訪問的另一瓶頸。使用緩存雖然可以解決一部分?jǐn)?shù)據(jù)讀寫壓力,但很多時(shí)候,磁盤仍然是系統(tǒng)最嚴(yán)重的瓶頸。而且磁盤是網(wǎng)站最重要的資產(chǎn),磁盤的可用性和容錯(cuò)性也至關(guān)重要。 機(jī)械硬盤和固態(tài)硬盤 機(jī)械硬盤是目前最常用的硬盤,通過馬達(dá)帶動磁頭到指定磁盤的位置訪問數(shù)據(jù),每次訪問數(shù)據(jù)都需要移動磁頭,在讀取連續(xù)數(shù)據(jù)和隨機(jī)訪問上,磁頭移動的次數(shù)相差巨大,因此機(jī)械硬盤的性能表現(xiàn)差別巨大,讀寫效率較低。而在網(wǎng)站應(yīng)用中,大多數(shù)數(shù)據(jù)的訪問都是隨機(jī)的,在這種情況下,固態(tài)硬盤具有更高的性能。但目前固態(tài)硬盤在工藝上、數(shù)據(jù)可靠性上還有待提升,因此固態(tài)硬盤的使用尚未普及,從發(fā)展趨勢看,取代機(jī)械硬盤應(yīng)該是遲早的事情。

新聞名稱:淺析淺析網(wǎng)站性能
分享地址:http://muchs.cn/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)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作