網(wǎng)站開得慢嗎?網(wǎng)站服務(wù)器性能改進方法摘要
在這個快節(jié)奏的時代,如果您單擊一個網(wǎng)站并希望簽入,但是該網(wǎng)站打開速度太慢,那么許多人應(yīng)該選擇關(guān)閉該網(wǎng)站并轉(zhuǎn)到其他住所。網(wǎng)站緩慢的開放速度不僅會造成流量損失,還會影響網(wǎng)站SEO優(yōu)化的效果。面對這樣的情況,我們有什么解決方案?
優(yōu)化思路分析
為了優(yōu)化Web服務(wù)器的性能,讓我們首先看一下Web服務(wù)器在網(wǎng)頁處理中的步驟:
1. Web瀏覽器將網(wǎng)頁請求發(fā)送到特定服務(wù)器;
2. Web服務(wù)器收到網(wǎng)頁請求后,搜索請求的網(wǎng)頁,并將請求的網(wǎng)頁發(fā)送給Web瀏覽器;
3. Web瀏覽器接收請求的網(wǎng)頁內(nèi)容并顯示。
以上三個步驟都與Web服務(wù)器有關(guān),但是實際的Web服務(wù)器性能與步驟2最相關(guān),在該步驟中,Web服務(wù)器需要查找瀏覽器請求的網(wǎng)頁內(nèi)容。
我們知道網(wǎng)頁內(nèi)容可以是靜態(tài)的,也可以是動態(tài)的靜態(tài)內(nèi)容。 Web服務(wù)器可以將結(jié)果直接發(fā)送回瀏覽器。對于動態(tài)內(nèi)容,通常需要將其移交給應(yīng)用程序服務(wù)器進行處理,然后應(yīng)用程序服務(wù)器返回結(jié)果。
當然,也有可以處理動態(tài)內(nèi)容的Web服務(wù)器。例如,IIS可以自我解釋和處理ASP,ASP.NET,這是Microsoft的兩種動態(tài)Web腳本語言。
從上面的簡要分析中,我們可以大致得出結(jié)論,有幾個因素會影響Web頁面的訪問:
1. Web服務(wù)器從磁盤讀取靜態(tài)頁面內(nèi)容的速度,即時間;
2. Web服務(wù)器確定所請求的內(nèi)容是靜態(tài)還是動態(tài)的時間;
3. Web服務(wù)器將請求轉(zhuǎn)發(fā)到應(yīng)用程序服務(wù)器的時間;
4.應(yīng)用服務(wù)器處理(解釋)動態(tài)內(nèi)容所需的時間;
5. Web服務(wù)器向瀏覽器返回Web內(nèi)容的響應(yīng)時間;
6. Web服務(wù)器從瀏覽器接收請求的處理性能;
7. Web訪問請求在網(wǎng)絡(luò)上的數(shù)據(jù)傳輸時間:包括從瀏覽器到服務(wù)器,以及從服務(wù)器到瀏覽器;
8.瀏覽器在本地計算和呈現(xiàn)Web內(nèi)容的時間,即接收內(nèi)容后顯示內(nèi)容的時間。
上面的8個項目簡單易懂。實際上,以下各項也與網(wǎng)頁訪問速度的體驗有關(guān)。你能考慮一下嗎?還是會影響頁面訪問性能。
Web服務(wù)器執(zhí)行安全策略檢查的時間或性能;
Web服務(wù)器讀取日志文件,寫入日志內(nèi)容并關(guān)閉對日志文件的訪問,然后進行讀寫然后關(guān)閉的時間。這三個步驟中的讀取和寫入操作還涉及磁盤訪問性能因素。
同時連接到Web服務(wù)器的客戶端數(shù),即并發(fā)訪問量。
我們總共可以提取上述11個影響因素,則為:
1. Web服務(wù)器磁盤性能;
2. Web服務(wù)器與應(yīng)用程序服務(wù)器之間的交互性能;
3.應(yīng)用服務(wù)器處理動態(tài)內(nèi)容的性能,或動態(tài)內(nèi)容應(yīng)用的處理性能;
4.客戶端與Web服務(wù)器之間的連接速度,即網(wǎng)絡(luò)傳輸性能;
5. Web瀏覽器解釋和呈現(xiàn)Web內(nèi)容的性能;
6. Web訪問并發(fā)性能。
為了反映我們的性能優(yōu)化,我們可以從以下幾點開始:
1.增加帶寬,包括服務(wù)器和客戶端上的Internet連接帶寬;
2.加快動態(tài)內(nèi)容的處理性能;
3.使用盡可能多的靜態(tài)內(nèi)容,以便Web服務(wù)器可以直接將Web內(nèi)容發(fā)送到瀏覽器,而無需請求應(yīng)用程序服務(wù)器。以下是一些可能的解決方案:
動態(tài)內(nèi)容緩存
動態(tài)內(nèi)容靜態(tài)
4.多個服務(wù)器的負載平衡可同時處理大量并發(fā)訪問;
5.提高服務(wù)器磁盤訪問性能,也稱為I / O性能;
6.減少網(wǎng)頁中HTTP請求的數(shù)量;
7.更換性能更好的Web服務(wù)器;
8.合理部署服務(wù)器。實踐證明,將服務(wù)器部署在靠近客戶端的位置可以顯著提高訪問性能。
性能優(yōu)化實踐
經(jīng)過上一節(jié)的簡要分析后,我相信您對優(yōu)化Web服務(wù)器有一定的想法。您可以從硬件級別,軟件級別和Web代碼級別進行優(yōu)化。
讓我們用一個具體的例子來實踐它。本文中的示例是一個小型網(wǎng)站。假設(shè)一些數(shù)據(jù)。如果它們相似,則它們純屬巧合,僅作為參考。在實際工作中,如果遇到大型站點,可以參考此處的分析來修改優(yōu)化計劃。
1.網(wǎng)站介紹
使用Discuz構(gòu)建的社區(qū)論壇站點!論壇程序,由主流的PHP + MySQL組成。
該網(wǎng)站目前有近50,000個注冊用戶,其中絕大多數(shù)是國內(nèi)用戶。活動用戶數(shù)量約為一半,平均每日PV為150,000至200,000,獨立訪問IP數(shù)量約為8000。
2. Web服務(wù)器性能優(yōu)化需求
該網(wǎng)站目前部署在國外的服務(wù)器上,并由虛擬主機租用進行運營。由于訪問量很大,因此通常會收到來自虛擬主機服務(wù)提供商的大量流量的通知,并且需要進行受控訪問。
另外,之所以在美國不租用虛擬主機的服務(wù)器,是因為國內(nèi)網(wǎng)站的歸檔非常繁瑣。在網(wǎng)站開始運作時,數(shù)據(jù)量和訪問量相對較小,因此對性能的要求不高,并且數(shù)據(jù)量較小,因此服務(wù)器在查詢和處理數(shù)據(jù)時速度更快,這也使得人們覺得訪問速度并不慢。現(xiàn)在,隨著數(shù)據(jù)量和訪問量的不斷增加,訪問速度已大大降低,現(xiàn)在是時候提高訪問性能了。
根據(jù)社區(qū)網(wǎng)站的現(xiàn)狀,提出的優(yōu)化要求是家庭訪問速度需要加倍,當前的網(wǎng)頁加載時間需要40秒左右。我希望優(yōu)化可以在20秒內(nèi)加載首頁。
另外,建議每天可以自動備份一次網(wǎng)站數(shù)據(jù),并將備份數(shù)據(jù)保存一個月,以便隨時恢復(fù)。
在以上兩個要求中,第一個是性能優(yōu)化要求,第二個是附加要求。
3.性能優(yōu)化計劃
根據(jù)網(wǎng)站的現(xiàn)狀和優(yōu)化需求,結(jié)合自身的經(jīng)驗以及Google的搜索,并不斷與網(wǎng)站所有者進行確認和溝通,最終得出了最終的性能優(yōu)化計劃:
從虛擬主機部署更改為獨立服務(wù)器部署
虛擬主機有很多限制。您不能自己配置Web服務(wù)器和PHP動態(tài)緩存。而且,獨立服務(wù)器可以享受專有的內(nèi)存和處理器資源,并且不再受虛擬主機供應(yīng)商的每個虛擬主機用戶的內(nèi)存和處理器的約束。資源占用限制。處理器資源和內(nèi)存資源對接受更多并發(fā)訪問具有直接的性能改善效果。
從Windows操作系統(tǒng)更改為Linux操作系統(tǒng)
該網(wǎng)站使用PHP + MySQL程序。 Windows下PHP的性能受到IIS的限制。需要通過ISAPI調(diào)用PHP,因此在Linux下性能不如Apache。 PHP是通過PHP模塊直接解釋的,它不如Nginx和PHP-FPM的性能好。由于使用了單獨的服務(wù)器,因此操作系統(tǒng)也可以由我們自己確定。對于Linux系統(tǒng),我們選擇了熟悉的Ubuntu Linux Server 10.04(一年前為12.04)^-^。
Web服務(wù)器使用Nginx代替Apache
選擇Nginx代替Apache的原因非常簡單明了,因為站點上有許多靜態(tài)附件文件,并且Nginx在處理靜態(tài)內(nèi)容方面的性能幾乎是Apache的10倍。
在PHP解釋和偽靜態(tài)規(guī)則方面,Apache比Nginx更強大,但這并不影響我們放棄它。為了減輕這種情況,我們稍后會動態(tài)緩存PHP。
要動態(tài)緩存PHP查詢,請使用eAccelerator作為加速器
PHP加速器是為了提高PHP執(zhí)行效率,以緩存PHP操作碼,從而使后續(xù)的PHP執(zhí)行不需要解析和轉(zhuǎn)換,而可以直接調(diào)用PHP操作碼,從而大大提高了速度。 。
eAccelerator是一個開放源代碼PHP加速器,用于優(yōu)化和緩存動態(tài)內(nèi)容。它提高了PHP腳本的緩存性能,使PHP腳本幾乎完全消除了編譯時的服務(wù)器開銷。它還優(yōu)化了腳本以提高其執(zhí)行效率。 PHP程序代碼的執(zhí)行效率可以提高1-10倍,這種加速仍然非常明顯。
具體來說,我們計劃為eAccelerator優(yōu)化以下設(shè)置:
緩存是使用物理內(nèi)存執(zhí)行的,沒有磁盤用于緩存。我們知道內(nèi)存的讀寫性能是硬盤的N倍,因此,在可以安排內(nèi)存資源時,強烈建議使用內(nèi)存來保存eAccelerator的緩存內(nèi)容。
緩存大小設(shè)置為32MB,這是默認情況下操作系統(tǒng)支持的最大緩存容量。盡管可以通過修改配置文件來增加該值,但我們認為這是不必要的,因此我們放棄了。
Nginx性能優(yōu)化
已選擇Nginx。盡管它的性能非常好,但是我們?nèi)匀恍枰獌?yōu)化其性能。在這種情況下,我們進行了以下優(yōu)化:
使用8個進程,每個進程需要大約20M的內(nèi)存消耗,這里總共使用了大約150M的內(nèi)存。
充分利用主服務(wù)器的CPU核心:
四個核心使用CPU粘性配置選項(worker_cpu_affinity),為每個核心處理器分配了兩個進程。
打開gzip壓縮:
gzip壓縮非常適合JS,CSS,XML壓縮,它可以壓縮一半,即將傳輸時間減少一倍;
對于圖像文件,JPG已被壓縮,其壓縮性能較差。
圖片在本地緩存了1天:
網(wǎng)站上有很多圖片。通常,圖像在上傳后不會被頻繁修改,而只會被頻繁訪問。因此,將圖像放置在Nginx緩存中可以減少服務(wù)器訪問負載的數(shù)量并提高訪問速度。
JS,CSS文件在本地緩存7天:
這兩種網(wǎng)頁文件不會正常修改并緩存,這可以減少加載次數(shù)并提高訪問速度。
為什么這兩個文件沒有與圖片一起設(shè)置緩存有效期,是因為考慮到不同文件的修改頻率不同。
Nginx日志每天被切割一次:
這種優(yōu)化可以大大減少Nginx日志文件的大小。查看一周后,每日日志文件約為50M。如果不是每天都削減,而是按月削減,那么該月的日志文件就是幾G。當在內(nèi)存中加載如此大的文件時,系統(tǒng)本身沒有足夠的內(nèi)存,因此自然會使用磁盤進行緩存,這會影響性能。
每天大約有50M,可以將其平穩(wěn)地加載到內(nèi)存中,以便Nginx在處理訪問時可以快速保存訪問日志。
經(jīng)過上述優(yōu)化項目,Nginx總共需要約200M的內(nèi)存資源。
優(yōu)化PHP CGI流程的性能
Nginx沒有PHP模塊,因此它對PHP的支持是通過PHP-FPM實現(xiàn)的。 PHP-FPM運行進程來處理并發(fā)請求。在這種情況下,我們配置了20個進程,每個進程占用約20M的內(nèi)存資源,總計約400M。
同時,PHP-FPM和Nginx之間的交互機制選擇Linux Socket模式而不是TCP協(xié)議端口,Socks是系統(tǒng)級處理模式,Socks是文件連接,TCP協(xié)議端口需要通過網(wǎng)絡(luò)協(xié)議進行處理,其性能不如前者。我們選擇了前者。
MySQL數(shù)據(jù)庫性能優(yōu)化
因為網(wǎng)站的主程序是別人開發(fā)的開源程序,所以我們無法處理數(shù)據(jù)庫查詢程序的優(yōu)化,只能從MySQL本身中找到突破。
我們可以想象,對于論壇網(wǎng)站,發(fā)布和檢查帖子的訪問次數(shù)遠大于創(chuàng)建帖子和回復(fù)帖子的訪問次數(shù)。它反映在MySQL數(shù)據(jù)庫中,即讀取和查詢表數(shù)據(jù)的連接處理更多。
因此,我們必須選擇在讀取表和查詢方面具有更好性能的存儲引擎。結(jié)合先前的知識,MySQL的默認MyISAM引擎旨在處理讀取頻率遠大于寫入頻率的環(huán)境。查詢效率相當高,內(nèi)存占用很少,這也與我們以低內(nèi)存配置租用的VPS一致。
特定于MySQL配置參數(shù)的優(yōu)化,由于服務(wù)器本身的內(nèi)存資源有限,因此直接使用默認的中型環(huán)境配置文件。
內(nèi)容分發(fā)網(wǎng)絡(luò)應(yīng)用
該站點每天有超過100,000次訪問,數(shù)以萬計的獨立IP訪問,查看以前的訪問統(tǒng)計數(shù)據(jù),來自該國各個地區(qū)的訪問,使用各種網(wǎng)絡(luò)連接進行訪問,以確保用戶從每個網(wǎng)絡(luò),并減少網(wǎng)站服務(wù)器的數(shù)量,我們使用CDN分發(fā)靜態(tài)內(nèi)容,以便各地的用戶都可以訪問已緩存在CDN上的文件。首次訪問靜態(tài)內(nèi)容時,CDN服務(wù)提供商會將靜態(tài)內(nèi)容緩存在全國的服務(wù)器上。在第二次訪問期間,用戶實際上并沒有連接到網(wǎng)站服務(wù)器來獲取文件,而是直接從CDN服務(wù)器獲取文件,這可以顯著提高網(wǎng)站性能。
希望云網(wǎng)時代小編的分享能幫助到大家,云網(wǎng)時代專注IDC14年,為廣大用戶提供專業(yè)化深圳服務(wù)器托管,深圳服務(wù)器租用,深圳主機托管,云服務(wù)器租用,香港主機租用等服務(wù)器資源,詳情歡迎咨詢客服了解。