-
通常重複請求一萬次計算總響應時間而後除以一萬獲得單詞響應時間。數據庫
-
測試程序並非啓動多線程而後不停發送請求,而是在兩次請求之間加入一個隨機等待時間。編程
-
吞吐量:天天經過收費站的車輛數目;併發數:正在行駛的車輛數目;響應時間:車速。TPS:每秒事務數;HPS:每秒請求數;QPS:每秒查詢數。瀏覽器
-
性能計數器:System Load(系統負載,最理想爲CPU數目)、對象與線程數、內存使用、CPU使用、磁盤與網絡I/O等指標。緩存
-
併發數逐漸增長階段:性能測試-->負載測試-->壓力測試、穩定性測試。安全
-
隨着請求增長系統處理能力增長變緩達到最大值,這是系統最大負載點。繼續加壓系統處理能力反而降低,最後崩潰可看做系統崩潰點。
-
瀏覽器訪問優化:1.減小HTTP請求(合併請求,CSS偏移響應);2.使用瀏覽器緩存(HTTP中Cache-Control和Expires屬性,更改文件名逐步更新);3.啓用壓縮html、css、js啓用GZip;4.Css放上面(下載後才渲染頁面),js放最下面(下載後立馬執行,因此可能阻塞);5.減小Cookie傳輸(靜態資源可啓用獨立域名,不須要cookie)。
-
CND加速:對靜態資源放入CDN極大改善網頁打開速度。
-
反向代理:位於網站機房一側,代理網站WEB服務器接收HTTP請求,可保護網站安全;可存放緩存;可實現自動負載均衡。
-
應用服務器性能優化:緩存、集羣、異步。
-
網站性能優化第必定律:優先考慮使用緩存(訪問速度高的存儲介質,提升訪問速度,無需重複計算)。計算KV對中Key的HashCode對應的Hash表索引,實現快速訪問。
-
合理應用緩存的地方:頻繁修改的數據(讀寫比例大於2:1)、沒有熱點的訪問、數據不一致與髒讀(接受超時後從新加載的時間間隔)、緩存可用性(緩存宕機不能對數據庫產生很大影響)、緩存預熱(提早加載數據放入緩存、LRU:最近最久未用算法)、緩存穿透(緩存無數據,直接訪問數據庫,最好將不存在的值緩存爲null)。
-
分佈式緩存:更新同步分佈式(JBoss Cache,全部機器保存緩存內容相同)、互不通訊的分佈式(Memcached,內存:根據大小塊分組,查找大於數據的最小chunk,採用LRU算法釋放最近最久未被訪問的空間,經過一致性哈希算法可無限制伸縮)。
-
異步操做:把用戶請求直接訪問數據庫環節增長消息隊列,請求發送到消息隊列後直接返回,有消息隊列操做數據庫,從而達到削峯做用。
-
使用集羣:使用負載均衡技術爲一個應用構建一個由墮胎服務器組成的服務器集羣,分散請求到多臺服務器處理。
-
代碼優化:多線程(啓動線程數=[任務執行時間/(任務執行時間-IO等待時間)]*CPU內核數)、資源複用(數據庫鏈接、網絡通信鏈接、線程、複雜對象等)、數據結構(字符-->MD5指紋-->hash計算-->hashcode)、垃圾回收。
-
存儲性能優化:1.機械(快速順序讀寫、慢速隨機)vs固態 2.B+樹vs LSM樹 3.RAID vs HDFS
-
RAID:RAID0(同時讀寫多塊,100%)、RAID1(同時寫入2塊,50%)、RAID10(同時結合1和0,50%)、RAID5((n-1)/n)、RAID6(可靠性比5高,(n-2)/N)。
-
HDFS:以塊爲單位,一個文件被分割成若干Block,當寫完一個Block是自動複製到另外2臺,保證有3個副本。經過MapReduce併發計算任務框架,同時讀取多個Block併發處理,至關於RAID0併發。