成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么站點(diǎn)訪問(wèn)慢?請(qǐng)收好這份 Web 服務(wù)器性能提升的總結(jié)

新聞 數(shù)據(jù)中心
要優(yōu)化 Web 服務(wù)器的性能,我們要看看 Web 服務(wù)器在 web 頁(yè)面處理上的步驟。我們知道,Web 頁(yè)面內(nèi)容有靜態(tài)的,也有動(dòng)態(tài)的,靜態(tài)的內(nèi)容,web 服務(wù)器可以直接將結(jié)果發(fā)回給瀏覽器,對(duì)于動(dòng)態(tài)內(nèi)容,則通常需要交給應(yīng)用服務(wù)器先處理,由應(yīng)用服務(wù)器返回結(jié)果。

[[318747]]

 優(yōu)化思路淺析

要優(yōu)化 Web 服務(wù)器的性能,我們先來(lái)看看 Web 服務(wù)器在 web 頁(yè)面處理上的步驟:

  1. Web 瀏覽器向一個(gè)特定的服務(wù)器發(fā)出 Web 頁(yè)面請(qǐng)求;
  2. Web 服務(wù)器接收到 web 頁(yè)面請(qǐng)求后,尋找所請(qǐng)求的 web 頁(yè)面,并將所請(qǐng)求的 Web 頁(yè)面?zhèn)魉徒o Web 瀏覽器;
  3. Web 瀏覽器接收到所請(qǐng)求的 web 頁(yè)面內(nèi)容,并將它顯示出來(lái)。

 

上面三個(gè)步驟都關(guān)系 Web 服務(wù)器,但實(shí)際 Web 服務(wù)器性能相關(guān)最大的是在第 2 步,這里 Web 服務(wù)器需要尋找來(lái)自瀏覽器所請(qǐng)求的 Web 頁(yè)面內(nèi)容。
我們知道,Web 頁(yè)面內(nèi)容有靜態(tài)的,也有動(dòng)態(tài)的,靜態(tài)的內(nèi)容,web 服務(wù)器可以直接將結(jié)果發(fā)回給瀏覽器,對(duì)于動(dòng)態(tài)內(nèi)容,則通常需要交給應(yīng)用服務(wù)器先處理,由應(yīng)用服務(wù)器返回結(jié)果。
當(dāng)然,也有 Web 服務(wù)器本身可以處理動(dòng)態(tài)內(nèi)容的,例如 IIS 就可以自已解釋處理 ASP, ASP.NET 這兩種微軟的動(dòng)態(tài)網(wǎng)頁(yè)腳本語(yǔ)言。
從上面簡(jiǎn)要的分析里,我們大致可以得到這樣的結(jié)論,影響 Web 頁(yè)面訪問(wèn)的影響因素會(huì)有這幾個(gè):

 

  1. Web 服務(wù)器從磁盤(pán)中讀取靜態(tài)頁(yè)面內(nèi)容的速度,也即時(shí)間;
  2. Web 服務(wù)器判定請(qǐng)求內(nèi)容是靜態(tài)還是動(dòng)態(tài)內(nèi)容的時(shí)間;
  3. Web 服務(wù)器轉(zhuǎn)發(fā)請(qǐng)求給應(yīng)用服務(wù)器的時(shí)間;
  4. 應(yīng)用服務(wù)器處理(解釋)動(dòng)態(tài)內(nèi)容所需的時(shí)間;
  5. Web 服務(wù)器返回 Web 內(nèi)容給瀏覽器的響應(yīng)時(shí)間;
  6. Web 服務(wù)器接收來(lái)自瀏覽器請(qǐng)求的處理性能;
  7. Web 訪問(wèn)請(qǐng)求數(shù)據(jù)在網(wǎng)絡(luò)上傳輸?shù)臅r(shí)間:包括從瀏覽器到服務(wù)器,和從服務(wù)器到瀏覽器兩部分;
  8. 瀏覽器本地計(jì)算和渲染 Web 內(nèi)容的時(shí)間,即接收內(nèi)容后展現(xiàn)內(nèi)容的時(shí)間。

 

上面 8 項(xiàng)很容易理解,也很直接,其實(shí)還有以下幾項(xiàng)也是關(guān)乎 Web 頁(yè)面訪問(wèn)速度體驗(yàn)的因素,你可以思考下是否如此?或者說(shuō)是否會(huì)影響到頁(yè)面訪問(wèn)性能。

 

  • Web 服務(wù)器執(zhí)行安全策略檢查的時(shí)間,或者說(shuō)性能;
  • Web 服務(wù)器讀取日志文件、寫(xiě)日志內(nèi)容、關(guān)閉對(duì)日志文件訪問(wèn)的時(shí)間,先讀后寫(xiě)再關(guān)閉,這三步中的讀與寫(xiě)又涉及到磁盤(pán)訪問(wèn)性能因素;
  • 同時(shí)與 Web 服務(wù)器連接會(huì)話的客戶端數(shù)量大小,即并發(fā)訪問(wèn)量多大。

我們可以將上面一共 11 項(xiàng)影響因素抽像出來(lái),那么就是:

  1. Web 服務(wù)器磁盤(pán)性能;
  2. Web 服務(wù)器與應(yīng)用服務(wù)器交互的性能;
  3. 應(yīng)用服務(wù)器處理動(dòng)態(tài)內(nèi)容的性能,或者說(shuō)動(dòng)態(tài)內(nèi)容應(yīng)用處理性能;
  4. 客戶端與 Web 服務(wù)器的連接速度,即網(wǎng)絡(luò)傳輸性能;
  5. Web 瀏覽器解釋和渲染 Web 內(nèi)容的性能;
  6. Web 訪問(wèn)并發(fā)性能。

 

反映到我們進(jìn)行性能優(yōu)化,可以入手的角度就有:

 

 

1. 增加帶寬,包括服務(wù)器和客戶端兩邊的 Internet 連接帶寬;

 

 

2. 加快動(dòng)態(tài)內(nèi)容的處理性能;

 

 

3. 盡可能多地使用靜態(tài)內(nèi)容,這樣 Web 服務(wù)器就可以無(wú)需請(qǐng)求應(yīng)用服務(wù)器,直接將 Web 內(nèi)容發(fā)給瀏覽器端,這里可以入手的方案又有:

 

 

            動(dòng)態(tài)內(nèi)容緩存
            動(dòng)態(tài)內(nèi)容靜態(tài)化

 

 

4. 多臺(tái)服務(wù)器負(fù)載均衡同時(shí)處理大量的并發(fā)訪問(wèn);

 

 

5. 提升服務(wù)器磁盤(pán)訪問(wèn)性能,也即通常所說(shuō)的 I/O 性能;

 

 

6. 減少網(wǎng)頁(yè)中的 HTTP 請(qǐng)求數(shù);

 

 

7. 更換更好性能的 Web 服務(wù)器;

 

 

8. 合理部署服務(wù)器,在離客戶端更近的地方部署服務(wù)器,已經(jīng)證明可以明顯地提升訪問(wèn)性能。

 

性能優(yōu)化實(shí)踐

 

經(jīng)過(guò)前面小節(jié)的簡(jiǎn)要分析,我相信你對(duì)優(yōu)化 Web 服務(wù)器有一定的思路了,你可以從硬件層面、軟件層面、Web 代碼三個(gè)層面去優(yōu)化。
下面我們結(jié)合一個(gè)具體的實(shí)例來(lái)實(shí)踐一回,本文所舉例是一個(gè)小型的 Web 站點(diǎn),部分?jǐn)?shù)據(jù)系假設(shè),如有類同,純屬巧合,僅起拋磚引玉之用。在實(shí)際工作中,如果碰到大站點(diǎn),你可以參考此處的分析,修改優(yōu)化方案。

 

1. 站點(diǎn)簡(jiǎn)介

一個(gè)社區(qū)論壇站點(diǎn),采用 Discuz! 論壇程序構(gòu)建,該程序采用主流的 PHP + MySQL 組成。

網(wǎng)站目前有近 5 萬(wàn)注冊(cè)用戶,絕大多數(shù)是國(guó)內(nèi)的用戶,活躍用戶數(shù)在一半左右,每天平均 PV 在 15~20 萬(wàn),獨(dú)立訪問(wèn) IP 數(shù)在 8000 左右。

2. Web 服務(wù)器性能優(yōu)化需求

網(wǎng)站現(xiàn)部署在國(guó)外的服務(wù)器,租用虛擬主機(jī)來(lái)運(yùn)營(yíng),因?yàn)樵L問(wèn)量比較大,所以經(jīng)常會(huì)收到虛擬主機(jī)服務(wù)商的流量很大的通知,要求控制下訪問(wèn)量。

另外,虛擬主機(jī)的服務(wù)器在美國(guó),沒(méi)有在國(guó)內(nèi)租用虛擬主機(jī)的原因是國(guó)內(nèi)網(wǎng)站在備案方面非常繁瑣,在網(wǎng)站一開(kāi)始運(yùn)營(yíng)時(shí)數(shù)據(jù)量和訪問(wèn)量都比較小,所以對(duì)性能要求不高,數(shù)據(jù)量小,所以服務(wù)器在查詢處理數(shù)據(jù)時(shí)速度比較快,也讓人感覺(jué)訪問(wèn)速度不慢,現(xiàn)在隨著數(shù)據(jù)量和訪問(wèn)量的不斷上升,訪問(wèn)速度已明顯下降,到了需要改善訪問(wèn)性能的時(shí)候了。

基于目前該社區(qū)網(wǎng)站的情況,提出的優(yōu)化需求是,國(guó)內(nèi)訪問(wèn)速度需要提升一倍,目前首頁(yè)加載時(shí)間需要 40 秒左右,希望優(yōu)化后能在 20 秒以內(nèi)將首頁(yè)加載完成。

另外提出網(wǎng)站數(shù)據(jù)能夠每天自動(dòng)備份一次,備份數(shù)據(jù)保留一個(gè)月的,以便隨時(shí)恢復(fù)。

上述兩點(diǎn)需求,其中第一條才是性能優(yōu)化需求,第二條是額外的需求了。

3. 性能優(yōu)化方案

根據(jù)其網(wǎng)站的現(xiàn)狀和優(yōu)化需求,結(jié)合自己的經(jīng)驗(yàn),加上谷歌的搜索,同時(shí)與網(wǎng)站主不斷確認(rèn)溝通,最終得到以下性能優(yōu)化方案:

由虛擬主機(jī)部署改為獨(dú)立服務(wù)器部署

虛擬主機(jī)受限比較多,無(wú)法自己自定義配置 Web 服務(wù)器,無(wú)法配置 PHP 動(dòng)態(tài)緩存,而且獨(dú)立服務(wù)器可以獨(dú)享內(nèi)存、處理器資源,不再受虛擬主機(jī)商對(duì)每個(gè)虛擬主機(jī)用戶的內(nèi)存和處理器資源占用限制。處理器資源和內(nèi)存資源,對(duì)接受更多并發(fā)訪問(wèn)有直接性能提升效果。

由 Windows 操作系統(tǒng)改為 Linux 操作系統(tǒng)

 

網(wǎng)站使用的是 PHP + MySQL 程序,PHP 在 Windows 下的性能,受限于 IIS 需要通過(guò) ISAPI 形式調(diào)用 PHP,所以性能不如 Linux 下 Apache 直接通過(guò) PHP 模塊解釋 PHP,更不如 Nginx 與 PHP-FPM 的性能,既然使用了獨(dú)立服務(wù)器,操作系統(tǒng)也可以自己確定,Linux 系統(tǒng)我們選用了熟悉的 Ubuntu Linux Server 10.04(一年前還沒(méi)有 12.04),^-^。

 

Web 服務(wù)器采用 Nginx,而不使用 Apache

 

選用 Nginx 而不用 Apache 的原因非常直接和干脆,因?yàn)檎军c(diǎn)里有很多靜態(tài)的附件文件,在處理靜態(tài)內(nèi)容上,Nginx 性能是 Apache 的差不多 10 倍。
在 PHP 解釋和偽靜態(tài)規(guī)則方面,Apache 要比 Nginx 強(qiáng),但這不影響我們放棄它,為緩解這一點(diǎn),我們?cè)诤竺鎸?duì) PHP 進(jìn)行了動(dòng)態(tài)緩存。

 

對(duì) PHP 查詢進(jìn)行動(dòng)態(tài)緩存,使用 eAccelerator 這個(gè)加速器

 

PHP 加速器是一個(gè)為了提高 PHP 執(zhí)行效率,從而緩存起 PHP 的操作碼,這樣 PHP 后面執(zhí)行就不用解析轉(zhuǎn)換了,可以直接調(diào)用 PHP 操作碼,這樣速度上就提高了不少。
eAccelerator 是一個(gè)開(kāi)源 PHP 加速器,優(yōu)化和動(dòng)態(tài)內(nèi)容緩存,提高了 PHP 腳本的緩存性能,使得 PHP 腳本在編譯的狀態(tài)下,對(duì)服務(wù)器的開(kāi)銷(xiāo)幾乎完全消除。它還有對(duì)腳本起優(yōu)化作用,以加快其執(zhí)行效率。使得的 PHP 程序代碼執(zhí)效率能提高 1-10 倍,這個(gè)加速還是非常明顯的。

 

具體地,我們計(jì)劃對(duì) eAccelerator 進(jìn)行以下設(shè)置優(yōu)化:

  • 緩存使用物理內(nèi)存來(lái)進(jìn)行,不使用磁盤(pán)來(lái)緩存。我們知道內(nèi)存的讀寫(xiě)性能是硬盤(pán)的 N 倍,所以在內(nèi)存資源可以安排情況下,強(qiáng)烈建議使用內(nèi)存來(lái)保存 eAccelerator 的緩存內(nèi)容。
  • 緩存大小設(shè)置為 32MB,這個(gè)值是操作系統(tǒng)默認(rèn)支持最大的緩存容量。雖然可以通過(guò)修改配置文件來(lái)加大這個(gè)值,但我們覺(jué)得沒(méi)有必要,所以就放棄了。

Nginx 性能優(yōu)化

選用了 Nginx,雖然它的性能很好,但我們?nèi)匀恍枰獙?duì)它進(jìn)行性能優(yōu)化,在這個(gè)案例中,我們做了以下優(yōu)化:

  • 使用 8 個(gè)進(jìn)程,每個(gè)進(jìn)程大約需要 20M 內(nèi)存消耗,這里一共使用了 150M 左右的內(nèi)存。
  • 充分使用主服務(wù)器的 CPU 內(nèi)核:

           四核,使用 CPU 粘性配置選項(xiàng)(worker_cpu_affinity),每核處理器分配兩個(gè)進(jìn)程。

  • 開(kāi)啟 gzip 壓縮功能:

          gzip 壓縮對(duì) JS, CSS, XML 壓縮效果非常好,能壓縮一半,即減少一倍的傳輸時(shí)間;

         對(duì)圖片文件,JPG 已經(jīng)壓縮過(guò)的,它的壓縮性能要少一些。

  • 圖片本地緩存 1 天:

          網(wǎng)站上的圖片很多,通常一張圖片上傳后,不會(huì)頻繁的修改,只會(huì)頻繁的訪問(wèn),所以將圖片放在 Nginx 緩存里,可以減少服務(wù)器訪問(wèn)加載次數(shù),提升訪問(wèn)速度。

  • JS、CSS 文件本地緩存 7 天:

         這兩種網(wǎng)頁(yè)文件,平時(shí)都不會(huì)去修改它,將它緩存起來(lái),可以減少加載次數(shù),提升訪問(wèn)速度。

         為什么這兩種文件不和圖片一起設(shè)置緩存有效期,是考慮了不同文件的修改頻率不一樣。

  • Nginx 日志每天切割一次:

這個(gè)優(yōu)化項(xiàng)能大大減小 Nginx 日志文件的大小,經(jīng)過(guò)一周的查看,每天的日志文件是 50M 左右,如果不是每天切割,用月切割,那一個(gè)月的日志文件就是幾個(gè) G,要 Web 服務(wù)器在內(nèi)存里加載這么大的文件,系統(tǒng)本身內(nèi)存不夠用,就自然會(huì)用到磁盤(pán)來(lái)緩存,這就影響性能。

每天 50M 左右,在內(nèi)存上完全可以順利加載,這樣 Nginx 在處理訪問(wèn)時(shí),可以快速的保存訪問(wèn)日志。

經(jīng)過(guò)上述幾個(gè)優(yōu)化項(xiàng)目,Nginx 這邊一共需要占用 200M 左右內(nèi)存資源。

對(duì) PHP CGI 進(jìn)程性能進(jìn)行優(yōu)化

 

Nginx 沒(méi)有 PHP 模塊,所以它對(duì) PHP 的支持是通過(guò) PHP-FPM 來(lái)實(shí)現(xiàn)的,PHP-FPM 是跑進(jìn)程來(lái)處理并發(fā)請(qǐng)求,在這個(gè)案例中,我們配置了 20 個(gè)進(jìn)程,每個(gè)進(jìn)程差不多占用 20M 左右內(nèi)存資源,一共是 400M 左右。
同時(shí),PHP-FPM 與 Nginx 交互機(jī)制,選用 Linux Socket 模式而不是 TCP 協(xié)議端口,Socks 是系統(tǒng)級(jí)處理模式,socks 也就是一個(gè)文件連接,而 TCP 協(xié)議端口,需要經(jīng)過(guò)網(wǎng)絡(luò)協(xié)議處理,性能不如前者,所以我們選擇了前者。

 

MySQL 數(shù)據(jù)庫(kù)性能優(yōu)化

 

因?yàn)榫W(wǎng)站主程序是選用他人開(kāi)發(fā)的開(kāi)源程序,所以對(duì)數(shù)據(jù)庫(kù)查詢的程序優(yōu)化我們無(wú)法處理,只能從 MySQL 本身尋找突破口。
我們可以想像一下,對(duì)于論壇網(wǎng)站,通常看貼、查貼的訪問(wèn)量要遠(yuǎn)大于創(chuàng)建貼子、回復(fù)貼子的訪問(wèn)量,體現(xiàn)在 MySQL 數(shù)據(jù)庫(kù)上,就是讀表與查詢表數(shù)據(jù)的連接處理更多。

 

因此我們要選擇對(duì)讀表、查詢性能更好的存儲(chǔ)引擎,結(jié)合以前了解的知識(shí),MySQL 缺省的 MyISAM 引擎就是被設(shè)計(jì)為適合處理讀頻率遠(yuǎn)大于寫(xiě)頻率的環(huán)境,查詢效率相當(dāng)可觀,而且內(nèi)存占用很少,這也與我們租用低內(nèi)存配置的 VPS 相符。

 

具體到 MySQL 配置參數(shù)的優(yōu)化上,受限于服務(wù)器上內(nèi)存資源本身有限,就直接采用缺省的中型環(huán)境配置文件。

 

內(nèi)容分發(fā)網(wǎng)絡(luò)應(yīng)用

 

站點(diǎn)每天十多萬(wàn)的訪問(wèn),上萬(wàn)獨(dú)立 IP 訪問(wèn),查看先前的訪問(wèn)統(tǒng)計(jì),訪問(wèn)來(lái)自國(guó)內(nèi)各個(gè)地區(qū),使用多種網(wǎng)絡(luò)連接訪問(wèn)進(jìn)來(lái),為保證來(lái)自各網(wǎng)絡(luò)的用戶訪問(wèn)速度,同時(shí)也減少對(duì)網(wǎng)站服務(wù)器的請(qǐng)求,我們采用了 CDN 來(lái)分發(fā)靜態(tài)內(nèi)容,這樣各地的用戶可以就近訪問(wèn)到已緩存在 CDN 上的文件,CDN 服務(wù)商會(huì)在靜態(tài)內(nèi)容第一次訪問(wèn)時(shí)緩存到他們?nèi)珖?guó)各地的服務(wù)器上,當(dāng)?shù)诙卧L問(wèn)時(shí),用戶實(shí)際是沒(méi)有連接到網(wǎng)站服務(wù)器上獲取文件的,而是直接從 CDN 服務(wù)器上獲取,可以明顯的提升網(wǎng)站性能。

 

 

責(zé)任編輯:張燕妮 來(lái)源: 高效運(yùn)維
相關(guān)推薦

2019-08-12 14:46:56

Web服務(wù)器性能

2023-05-03 20:53:48

2023-02-10 18:32:21

項(xiàng)目管理實(shí)踐

2023-12-13 09:08:26

CPU性能分析Linux

2022-01-17 18:21:09

數(shù)據(jù)庫(kù)社交引流

2023-12-19 22:15:27

Git垃圾收集器開(kāi)發(fā)

2021-05-13 23:39:19

勒索軟件攻擊數(shù)據(jù)泄露

2010-05-18 16:52:42

IIS服務(wù)器

2010-01-06 14:08:33

JSON WEB站點(diǎn)

2010-05-18 17:13:11

IIS服務(wù)器

2020-07-02 09:55:32

運(yùn)維架構(gòu)技術(shù)

2019-12-24 15:14:24

技術(shù)

2015-02-05 09:47:52

Web性能Web開(kāi)發(fā)

2009-02-09 18:02:00

2010-05-18 18:36:22

IIS服務(wù)器

2018-10-26 11:30:40

Apache Web服務(wù)器站點(diǎn)

2023-03-20 07:27:43

2013-05-02 09:31:02

虛擬化服務(wù)器

2009-10-19 10:26:39

2020-09-08 17:12:12

編碼編程GitHub
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 99精品电影| 91一区二区在线观看 | 久久蜜桃av一区二区天堂 | 国产成人精品999在线观看 | 在线观看成人 | 国产精品日女人 | 伊人狠狠操 | 国产综合在线视频 | 欧美日在线 | 免费日本视频 | 综合成人在线 | 中文字幕日韩欧美 | 日日夜夜精品免费视频 | 欧美午夜精品久久久久久浪潮 | av高清 | www成人啪啪18 | 免费国产黄网站在线观看视频 | 国产一区二区三区四区五区3d | 国产99久久精品一区二区永久免费 | 91麻豆精品国产91久久久更新资源速度超快 | wwwsihu| 亚洲高清一区二区三区 | 国产精品久久精品 | av国产精品| 亚洲首页| 日本欧美国产在线观看 | 天堂资源视频 | 久久久xxx | 成人精品毛片国产亚洲av十九禁 | 台湾佬成人网 | 亚洲一区二区免费电影 | 久久国产精品视频 | 在线中文字幕视频 | 日韩精品一区二区三区四区 | www九色 | 美女亚洲一区 | 精品国产一区二区 | 欧美成人免费在线视频 | 久久影音先锋 | 中文字幕一区在线观看视频 | 91精品国产777在线观看 |