天天看點

HTTP性能優化

HTTP性能優化

通過以上圖,可以從三個方面來優化HTTP的性能。

1.伺服器

衡量伺服器性能的名額,主要有以下幾個:

a.吞吐量(或TPS、RPS、QPS)

b.并發數

c.響應時間

d.資源使用率(CPU、記憶體、硬碟、網絡)

-->提高吞吐量,吞吐量越高,伺服器的性能越好!

-->提高并發數,支援的并發數越大,伺服器的性能越好!

-->降低響應時間,響應時間越短,伺服器的性能越好!

-->合理利用伺服器資源,過高肯定是不行,過低也有可能是存在問題的!

-->Linux伺服器的監控工具主要有top、sar、glances等

2.用戶端

因為資料都要通過網絡從伺服器擷取,是以它最基本的性能名額就是:延遲。

所謂的“延遲”其實就是“等待”,等待資料到達用戶端時所花費的時間。

延遲的原因,有幾點:

a.距離:由于地理距離導緻的延遲,是無法客服的,比如通路數千公裡外的網站。

b.帶寬

c.DNS查詢(如果域名在本地沒有緩存的話)

d.TCP握手(必須要經過 SYN、SYN/ACK、ACK 三個包之後才能建立連接配接)

-->對于 HTTP 性能優化,有一個專門的測試網站:WebPageTest,或使用浏覽器的開發者工具

-->一次 HTTP“請求 - 響應”的過程中延遲的時間是非常大的,有可能會占到90%以上

-->是以,用戶端優化的關鍵,降低延遲

3.傳輸鍊路(用戶端和伺服器之間的傳輸鍊路)

使用CDN等技術,總之,要增加帶寬,降低延遲,優化傳輸速度。

-----------------------------------------------具體的優化手段----------------------------------------------------------

主要是優化服務端的性能。

1.前端:可以利用PageSpeed等工具進行檢測并根據提示進行優化。

2.後端:主要有以下幾方面

a.硬體、軟體或服務

比如更換強勁的CPU、記憶體、磁盤、帶寬等,比如使用CDN

b.伺服器選擇、參數調優

選用高性能的伺服器,比如Nginx,它強大的反向代理能力實作“動靜分離”,動态頁面交給Tomcat等,靜态資源交給Nginx

另外,Nginx自身也有可以調優的參數,比如說禁用負載均衡鎖、增大連接配接池,綁定 CPU 等

對于 HTTP 協定一定要啟用長連接配接,因為TCP 和 SSL 建立新連接配接的成本非常高,可能會占到用戶端總延遲的一半以上

TCP 的新特性“TCP Fast Open“,類似 TLS 的“False Start”,可以在初次握手的時候就傳輸資料,盡可能在作業系統和 Nginx 裡開啟這個特性,減少外網和内網裡的握手延遲。

使用HTTP協定内置的“資料壓縮”編碼,可以選擇标準的 gzip,也可以嘗試新的壓縮算法 br

不過在資料壓縮的時候應當注意選擇适當的壓縮率,不是壓縮的越厲害越好

c.緩存

網站系統内部,可以使用 Memcache、Redis等專門的緩存服務,把計算的中間結果和資源存儲在記憶體或者硬碟裡

Web 伺服器首先檢查緩存系統,如果有資料就立即傳回給用戶端

另外,CDN 的網絡加速功能就是建立在緩存的基礎之上的,可以這麼說,如果沒有緩存,那就沒有 CDN。

利用好緩存功能的關鍵是了解它的工作原理,為每個資源都添加 ETag 和 Last-modified字段,再用 Cache-Control、Expires 設定好緩存控制屬性。

其中最基本的是 max-age 有效期,标記資源可緩存的時間。對于圖檔、CSS 等靜态資源可以設定較長的時間,比如一天或者

一個月,對于動态資源,除非是實時性非常高,也可以設定一個較短的時間,比如 1 秒或者 5 秒。這樣一旦資源到達用戶端,就

會被緩存起來,在有效期内都不會再向伺服器發送請求。

上一篇: 架構設計
下一篇: HTTP的無狀态