四虎影视库国产精品一区-四虎影视库-四虎影视久久久免费-四虎影视久久久-四虎影视久久-四虎影视精品永久免费网站

幫助中心
技術運維百科
將Web服務器應用性能提高十倍的10條建議
2016-05-19 18:00:15
ModelId=2&Id=715">

舉一個例子,一份亞馬遜十年前做過的研究可以證明,甚至在那個時候,網頁加載時間每減少100毫秒,收入就會增加1%。另一個最近的研究特別強調一個事實,即超過一半的網站擁有者在調查中承認它們會因為應用程序性能的問題流失用戶。

如何提高web服務器性能

網站到底需要多快呢?對于頁面加載,每增加1秒鐘就有4%的用戶放棄使用。頂級的電子商務站點的頁面在第一次交互時可以做到1秒到3秒加載時間,而這是提供最高舒適度的速度。很明顯這種利害關系對于 web 應用來說很高,而且在不斷的增加。

想要提高效率很簡單,但是看到實際結果很難。為了在你的探索之旅上幫助到你,這篇文章會給你提供10條最高可以提升10倍網站性能的建議。這是一系列介紹提高應用程序性能的第一篇文章,包括充分測試的優化技術和一點 NGINX 的幫助。這個系列也給出了潛在的提高安全性的幫助。

Tip #1: 通過反向代理來提高性能和增加安全性

如果你的 web 應用運行在單個機器上,那么這個辦法會明顯的提升性能:只需要換一個更快的機器,更好的處理器,更多的內存,更快的磁盤陣列,等等。然后新機器就可以更快 的運行你的 WordPress 服務器, Node.js 程序, Java 程序,以及其它程序。(如果你的程序要訪問數據庫服務器,那么解決方法依然很簡單:添加兩個更快的機器,以及在兩臺電腦之間使用一個更快的鏈路。)

問題是,機器速度可能并不是問題。web 程序運行慢經常是因為計算機一直在不同的任務之間切換:通過成千上萬的連接和用戶交互,從磁盤訪問文件,運行代碼,等等。應用服務器可能會抖動 thrashing-比如說內存不足、將內存數據交換到磁盤,以及有多個請求要等待某個任務完成,如磁盤I/O。

你可以采取一個完全不同的方案來替代升級硬件:添加一個反向代理服務器來分擔部分任務。反向代理服務器位于運行應用的機器的前端,是用來處理網絡流量的。只有反向代理服務器是直接連接到互聯網的;和應用服務器的通訊都是通過一個快速的內部網絡完成的。

使用反向代理服務器可以將應用服務器從等待用戶與 web 程序交互解放出來,這樣應用服務器就可以專注于為反向代理服務器構建網頁,讓其能夠傳輸到互聯網上。而應用服務器就不需要等待客戶端的響應,其運行速度可以接近于優化后的性能水平。

添加反向代理服務器還可以給你的 web 服務器安裝帶來靈活性。比如,一個某種類型的服務器已經超載了,那么就可以輕松的添加另一個相同的服務器;如果某個機器宕機了,也可以很容易替代一個新的。

因為反向代理帶來的靈活性,所以反向代理也是一些性能加速功能的必要前提,比如:

  1. 負載均衡 (參見 Tip #2) – 負載均衡運行在反向代理服務器上,用來將流量均衡分配給一批應用。有了合適的負載均衡,你就可以添加應用服務器而根本不用修改應用。
  2. 緩存靜態文件 (參見 Tip #3) – 直接讀取的文件,比如圖片或者客戶端代碼,可以保存在反向代理服務器,然后直接發給客戶端,這樣就可以提高速度、分擔應用服務器的負載,可以讓應用運行的更快。
  3. 網站安全反向代理服務器可以提高網站安全性,以及快速的發現和響應攻擊,保證應用服務器處于被保護狀態。如何提高web服務器性能

NGINX 軟件為用作反向代理服務器而專門設計,也包含了上述的多種功能。NGINX 使用事件驅動的方式處理請求,這會比傳統的服務器更加有效率。NGINX plus 添加了更多高級的反向代理特性,比如應用的健康度檢查,專門用來處理請求路由、高級緩沖和相關支持。

NGINX Worker Process helps increase application performance

Tip #2: 添加負載平衡

添加一個負載均衡服務器 是一個相當簡單的用來提高性能和網站安全性的的方法。與其將核心 Web 服務器變得越來越大和越來越強,不如使用負載均衡將流量分配到多個服務器。即使程序寫的不好,或者在擴容方面有困難,僅是使用負載均衡服務器就可以很好的提高用戶體驗。

負載均衡服務器首先是一個反向代理服務器(參見Tip #1)——它接受來自互聯網的流量,然后轉發請求給另一個服務器。特別是負載均衡服務器支持兩個或多個應用服務器,使用分配算法將請求轉發給不同服務器。 最簡單的負載均衡方法是輪轉法round robin,每個新的請求都會發給列表里的下一個服務器。其它的復制均衡方法包括將請求發給活動連接最少的服務器。NGINX plus 擁有將特定用戶的會話分配給同一個服務器的能力。

負載均衡可以很好的提高性能是因為它可以避免某個服務器過載而另一些服務器卻沒有需要處理的流量。它也可以簡單的擴展服務器規模,因為你可以添加多個價格相對便宜的服務器并且保證它們被充分利用了。

可以進行負載均衡的協議包括 HTTP、HTTPS、SPDY、HTTP/2、WebSocket、FastCGI、SCGI、uwsgi、 memcached 等,以及幾種其它的應用類型,包括基于 TCP 的應用和其它的第4層協議的程序。分析你的 web 應用來決定你要使用哪些以及哪些地方性能不足。

相同的服務器或服務器群可以被用來進行負載均衡,也可以用來處理其它的任務,如 SSL 末端服務器,支持客戶端的 HTTP/1.x 和 HTTP/2 請求,以及緩存靜態文件。

Tip #3: 緩存靜態和動態的內容

緩存可以通過加速內容的傳輸速度來提高 web 應用的性能。它可以采用以下幾種策略:當需要的時候預處理要傳輸的內容,保存數據到速度更快的設備,把數據存儲在距離客戶端更近的位置,或者將這幾種方法結合起來使用。

有兩種不同類型數據的緩存:

  1. 靜態內容緩存。不經常變化的文件,比如圖像(JPEG、PNG) 和代碼(CSS,JavaScript),可以保存在外圍服務器上,這樣就可以快速的從內存和磁盤上提取。
  2. 動態內容緩存。很多 web 應用會針對每次網頁請求生成一個新的 HTML 頁面。在短時間內簡單的緩存生成的 HTML 內容,就可以很好的減少要生成的內容的數量,而且這些頁面足夠新,可以滿足你的需要。

舉個例子,如果一個頁面每秒會被瀏覽10次,你將它緩存 1 秒,90%請求的頁面都會直接從緩存提取。如果你分開緩存靜態內容,甚至新生成的頁面可能都是由這些緩存構成的。

下面由是 web 應用發明的三種主要的緩存技術:

  1. 縮短數據與用戶的網絡距離。把一份內容的拷貝放的離用戶更近的節點來減少傳輸時間。
  2. 提高內容服務器的速度。內容可以保存在一個更快的服務器上來減少提取文件的時間。
  3. 從過載服務器上移走數據。機器經常因為要完成某些其它的任務而造成某個任務的執行速度比測試結果要差。將數據緩存在不同的機器上可以提高緩存資源和非緩存資源的性能,而這是因為主機沒有被過度使用。

對 web 應用的緩存機制可以在 web 應用服務器內部實現。首先,緩存動態內容是用來減少應用服務器加載動態內容的時間。其次,緩存靜態內容(包括動態內容的臨時拷貝)是為了更進一步的分擔應 用服務器的負載。而且緩存之后會從應用服務器轉移到對用戶而言更快、更近的機器,從而減少應用服務器的壓力,減少提取數據和傳輸數據的時間。

改進過的緩存方案可以極大的提高應用的速度。對于大多數網頁來說,靜態數據,比如大圖像文件,構成了超過一半的內容。如果沒有緩存,那么這可能會花費幾秒的時間來提取和傳輸這類數據,但是采用了緩存之后不到1秒就可以完成。

舉一個在實際中緩存是如何使用的例子, NGINX 和 NGINX Plus 使用了兩條指令來設置緩存機制:proxy_cache_pathproxy_cache。你可以指定緩存的位置和大小、文件在緩存中保存的最長時間和其它一些參數。使用第三條(而且是相當受歡迎的一條)指令 proxy_cache_use_stale,如果提供新鮮內容的服務器忙碌或者掛掉了,你甚至可以讓緩存提供較舊的內容,這樣客戶端就不會一無所得。從用戶的角度來看這可以很好的提高你的網站或者應用的可用時間。

NGINX plus 有個高級緩存特性,包括對緩存清除的支持和在儀表盤上顯示緩存狀態信息。

要想獲得更多關于 NGINX 的緩存機制的信息可以瀏覽 NGINX Plus 管理員指南中的《參考文檔》《NGINX 內容緩存》

注意:緩存機制分布于應用開發者、投資決策者以及實際的系統運維人員之間。本文提到的一些復雜的緩存機制從 DevOps 的角度來看很具有價值,即對集應用開發者、架構師以及運維操作人員的功能為一體的工程師來說可以滿足它們對站點功能性、響應時間、安全性和商業結果(如完 成的交易數)等需要。

如何提高web服務器性能

USA-IDC為您提供免備案服務器 0元試用
立即聯系在線客服,即可申請免費產品試用服務