<b>一、性能測試名額 </b>
1.1、響應時間
1.2、并發數 指系統能夠同時處理請求的數目,反映了系統的負載特性
1.3、吞吐量 TPS(每秒事務數) HPS(每秒HTTP請求數) QPS(每秒查詢數)等
1.4、性能計數 包括System Load、對象與線程數、記憶體使用、CPU使用、磁盤與網絡I/O等名額
<b>二、性能測試方法</b>
2.1、性能測試 與初期規劃的性能名額為預期目标,不斷施加壓力,驗證是否在可接受範圍,性能是否能達到性能預期
2.2、負載測試 不斷地增加并發請求以增加系統壓力,直到系統的某項或是多項性能名額大緻安全臨界值
2.3、壓力測試 超過安全負載的情況下,對系統繼續施加壓力,直到系統崩潰或不能再處理任何請求,以此獲得系統最大壓力承受能力。
2.4、穩定性測試
<b>三、性能優化</b>
根據網站分層架構,可分為Web前端性能優化、應用伺服器性能優化、存儲伺服器性能優化。
<b>3.1、Web前端性能優化</b>
3.1.1 浏覽器通路優化
A、減少http請求 HTTP每次都要建立通信鍊路,進行資料傳輸,服務端,會啟動獨立的線程去處理,這些開銷都很昂貴,減少HTTP請求的資料目可以有效提高通路性能。主要手段:合并CSS、合并JavaScript、合并圖檔
B、使用浏覽器緩存 對靜态資源檔案可以緩存在浏覽器中,通過設定HTTP頭中的Cache-Control和Expires屬性,可以設定浏覽器緩存,針對JavaScript可以通過改變檔案名實作,浏覽器緩存政策在更新靜态資源 時,應采用批量更新的方法,不宜一次全部更新
C、啟用壓縮,在伺服器端對檔案進行壓縮,在浏覽器端對檔案解壓,一般采用GZip壓縮可達80%的壓縮率
D、CSS檔案放在頁面最上面、JavaScript放在頁面最下面(這一點深有體會)
E、減少Cookie傳輸
3.1.2 CDN加速
3.1.3 反向代理 除了安全功能、代理伺服器也可能通過配置緩存功能加速Web請求
<b>3.2 應用伺服器性能優化</b>
3.2.1 分布式緩存 緩存的本質是一個記憶體Hash表,緩存主要存放那些讀寫比很高、很少變化的熱資料。網站資料通路一般遵循二八定律、即80%的通路落在20%的資料上,将這20%的資料緩存起來,可以很好的地改善系統性能。提高資料讀取速度 、降低存儲通路壓力
使用緩存時要注意緩存穿透(惡意的) 目前成熟的緩存産品有Memcached、Redis
3.2.2 異步操作 任何可以晚點做的事情都應該晚點再做
3.2.3 使用叢集
3.2.4 代碼優化
A、使用多線程
B、資源複用 單例 對象池
C、資料結構 如Time33可以很好的解決hash沖突
D、垃圾回收 垃圾回收可能會對系統的性能特性産生巨大影響,了解垃圾回收機制有助于程式優化和參數調優。
<b>3.3 存儲性能優化 </b>
3.3.1 機械硬碟 VS 固态硬碟
3.3.2 B+樹 VS LSM樹
傳統機械磁盤具有快速順序讀寫、慢速随機讀寫的通路特性,這個特性對磁盤存儲結構和算法的選擇影響很大。
傳統的關系型資料庫使用的是B+樹。
目前許多NoSQL采用的LSM樹
什麼是LSM樹:核心思想的核心就是放棄部分讀能力,換取寫入的最大化能力。LSM Tree ,這個概念就是結構化合并樹的意思,它的核心思路其實非常簡單,就是假定記憶體足夠大,是以不需要每次有資料更新就必須将資料寫入到磁盤中,而可以先将最新的資料駐留在磁盤中,等到積累到最後多之後,再使用歸并排序的方式将記憶體内的資料合并追加到磁盤隊尾(因為所有待排序的樹都是有序的,可以通過合并排序的方式快速合并到一起)。
3.3.3 RAID(廉價磁盤備援陣列) VS HDFS
RAID的技術有(以下假設有N塊磁盤)
RAID0、将資料分成N份,同時并發寫N塊磁盤,是一塊磁盤的N倍,缺點,不做備份,一塊磁盤出損壞,資料完整性被破壞
RAID1 寫入時将資料同時寫入兩塊磁盤,
RAID10 結合RAID0 RAID1 缺點 對磁盤的使用率不高
RAID3 将資料分成N-1份,并發寫入N-1塊磁盤,在第N塊磁盤記錄校驗資料,作何一塊磁盤損壞,可以利用其他N-1塊磁盤的資料修複。缺點,任何修改都會導緻第N塊磁盤重寫校驗資料,N磁盤容易損壞。RAID3很少在實踐中使用
RAID5 與RAID3原理類似,但被更多使用,原因校驗資料不是寫入第N塊磁盤,而是螺旋式地寫入到所有的磁盤中,這樣校驗資料的修改被平均到所有磁盤上。
RAID6 與 RAID5類似,但是資料隻寫入N-2塊磁盤,并螺旋式地在兩塊磁盤中寫入校驗資訊
HDFS,以塊為機關管理檔案,當應用程式寫檔案時,每寫完一個Block,HDFS就将其自動複制到另外兩台機器上,保證每個Block有三個副本。
HDFS兩個重要的伺服器角色NameNode(隻部署一個)、DataNode