轉 高性能建站方略

 

1、概述php

         優化網站響應時間是保證網站受用戶關注的要點,主要方案有:css

一、減小HTTP請求html

         當須要加載圖片、css、js等內容時,儘可能減小加載的次數。能夠合併加載,另外當改動量不多時,儘可能將內容進行緩存。linux

         圖片的緩存能夠設定更新時間,定時去服務器查看是否有須要更新的內容。一般能夠定時在1周甚至更久的時間。web

         CSS、JS的緩存,一般能夠經過文件名的方式來判斷是否須要從新加載。當網頁肯定須要加載某些js和css時,把文件和已經緩存的文件名進行判斷,文件名一致則直接用緩存。所以,能夠在文件名中設定版本號,如初始階段是avatar.1.js,當對此js的內容進行改動後,將html上加載的js文件名改成avatar.2.js,相應的改變服務器上的文件名,強制進行加載。另外,對於能夠網頁加載完畢後再加載的js,能夠將引用的代碼放到html標籤的最後,保證先將頁面展現出來。數據庫

二、動態內容靜態化apache

三、優化數據庫瀏覽器

         數據庫的優化是網站優化的最關鍵的部分。後面專門寫。緩存

四、使用負載均衡服務器

         能夠用DNS輪詢、反向代理、HTTP重定向等方式,實現負載均衡,保證每臺web服務器接收的請求數量大體相同。

五、使用緩存

         使用緩存將改動量大、讀取量大等的內容保存在內存中,避免數據庫的屢次操做,因爲內存的讀寫速度比I/O的速度快得多(數據庫存在硬盤中,讀寫須要通過I/O),則能夠節省較多的時間。

 

2、吞吐率與壓力測試

         吞吐率是指單位時間內服務器處理的請求數,一般用reqs/s。吞吐率描述運行期間單位時間內處理的請求數,當須要衡量單位時間內能夠承受的最大吞吐率,則須要壓力測試。

         壓力測試有許多工具,如LoadRunner、JMeter、ab(Apache Bench)等。

         ab是apache附帶的壓力測試軟件。能夠經過linux的命令行,直接進行測試,使用方法以下:

         ab[options] [http://]hostname[:port]/path

         其中,options是可選參數,主要以下:

         1)-n:測試會話中執行的請求數,默認是1個

         2)-c:要建立的併發用戶數,默認1個

         3)-t:等待web服務器的最大響應時間,默認沒有限制

         4)-k:使用keep-alive特性

         5)-C:(大寫的C)對請求附加一個Cookie,形式爲name=value

         實例,10個併發用戶、1000次請求:

         ab  -c 10 -n 1000  http://localhost/index.php

         其結果會有執行總次數(-n參數)、併發請求數(-c參數)、成功次數、失敗次數、總耗時、平均每一個請求的耗時(即用戶平均等待時間)、平均每秒能夠處理的請求數(即吞吐率)。其中,吞吐率是平均每秒處理的請求數,在結果中的參數是Request per second。

 

3、持久鏈接

         持久鏈接(Keep-Alive)又稱爲長鏈接,是指TCP鏈接中持續發送多份數據而不斷開鏈接。相應的也有短鏈接的概念,即每次完成數據發送後就斷開鏈接。

         因爲客戶端和服務器每次創建鏈接,都須要進行三次握手,須要耗費時間。所以但願進行長鏈接,改變數據發送後就斷開的狀況。HTTP1.1開始支持長鏈接。

         HTTP長鏈接須要瀏覽器和Web服務器共同完成:瀏覽器須要保持一個TCP鏈接不斷開,而且不斷髮送多個請求;服務器不能過早主動關閉鏈接。

目前大部分瀏覽器支持長鏈接,只須要在發出的HTTP請求數據頭中包含相關長鏈接的聲明便可:Connection:Keep-Alive,即在發出的header中定義該鏈接方式便可。

對於服務器,則須要Web服務器的配置中支持長鏈接,如:

Apache中設置:KeepAliveOn,KeepAliveTimeout 20

Nginx中配置:

http {

keepalive_timeout20; --長鏈接timeout

    keepalive_requests 8192; --每一個鏈接最大請求數

}

長鏈接對於瀏覽器和服務器都有默認超時時間,即超過設定的時間若是尚未請求,則斷開鏈接。當雙方都設定超時時間,則以較短的一方爲最終的超時時間。

當大量請求小文件時,長鏈接能夠顯著加快速度。可是,長鏈接會影響到服務器的併發性能,所以也不是全部狀況都設置長鏈接。

相關文章
相關標籤/搜索