當前位置:首頁 » 網頁前端 » web伺服器相應速度慢
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

web伺服器相應速度慢

發布時間: 2022-08-16 11:30:06

1. 如何提升web伺服器的運行速度

秦時明月漢時關,萬里長徵人未還.

2. 伺服器響應慢是怎麼回事和怎麼解決響應速度慢

這種問題挺復雜的,有些原因真的很出意料,一般程式化的方法還找不到。
1.先用瀏覽器F12控台查看一下網頁載入資源的情況,看是不是某些資源載入慢的緣故。
2.如果不是的話, 那就檢查一下是不是網路問題。
3.如果都不是上面的問題,你再去看下伺服器的狀況,應該有後台可以看,看下是不是帶寬不足。(或者用top,iptraf命令看一下)
4.最後還有問題的話看下你php代碼是不是有問題,用xhprof看下代碼哪裡慢。
---------
例1:
伺服器: 戴爾 PowerEdge R620 Rack Mount Chassis
今天公司的 web伺服器響應異常的慢 平常 200ms 執行完畢的一個action,現在要 2秒多才能執行那個完畢。
之前也出現過這種狀況,但再重啟之後就一般及解決了。
遍歷網上
說是
1、網路原因 2、系統原因 3、硬體原因
首先分析網路原因 我 ping 伺服器的 接收到響應要1ms,平常都是小於 1ms
2、系統原因
我查看了任務管理器發現 CPU 橫容易就奔向100%了。
4 個cpu 核心 馬上沖向頂端持平了。

3、硬體原因
聽網上說可能還有一部分磁碟 i/o 也會導致運行速度大減的

2、3 部分圖片當時很著急解決問題沒有截圖、
下面是今天晚上伺服器 恢復正常後的基本空閑時的cpu 狀況、和磁碟讀取狀況

想問一下、普通我這種刀片伺服器正常運行時oracle 的一般最高讀寫速度、為什麼怎樣找到程序中那個可能正執行死循環的程序

經過之前一天的推測,覺得應該是伺服器上的另一個應用伺服器,出現了死循環,聯系了此程序開發人員讓其恢復了上一個版本,問題就沒有了。
就是那一個個驗證推測麻煩,花了我一天的時間,想直接知道哪裡死循環。

經過之前一天的推測,覺得應該是伺服器上的另一個應用伺服器,出現了死循環,聯系了此程序開發人員讓其恢復了上一個版本,問題就沒有了。
就是那一個個驗證推測麻煩,花了我一天的時間,想直接知道哪裡死循環。

例2:
我的WIN2003獨立伺服器(P4 2.8G/1G的方正商用機,非專業伺服器),ACCESS資料庫有800多兆,同時在線會員100多人。瀏覽速度很慢,日發帖從1000多銳減到200多貼,網友怨聲載道,不得已才轉換到DZ。

轉換後DZ的資料庫有600多兆。剛開始挺快的,隨後升級到DZ6.1,現在過了才1個多月,伺服器響應越來越慢。CPU佔用並不高,通常不到20%,內存佔用好像也正常。就是經常硬碟燈一直亮(是常亮,不是閃亮),每到這時論壇頁面就打不開,有時光顯示頁面頭部,要等很長時間。硬碟燈不常亮的時候速度挺快。

以前是一兩天出現一次,後來越來越頻繁,現在過不多大會兒就出現一次,簡直受不了了。

相信很多人在用windows2003伺服器或者vps,而且一開始用,速度都相當的快,但是過了幾天速度變慢了很多,也會遇到有時候網站打開卡等現象,即使網站沒什麼流量也會出現。

有時候就會懷疑是不是我的伺服器或者vps很差勁,買到假貨了?其實不然。

其實這些問題作祟的都是w3wp.exe這個iis進程在搗鬼。

在WINDOWS2003+IIS6下,經常出現w3wp的內存佔用不能及時釋放,從而導致伺服器響應速度很慢。

遇到這些現象,我們可以用以下方法進行解決,不影響網站運營及系統問題。

可以做以下配置修改進行改善:
1、在IIS中對每個網站進行單獨的應用程序池配置。即互相之間不影響。
2、設置應用程序池的回收時間,默認為1720小時,可以根據情況修改。同時,設置同時運行的web工作進程數目為1。再設置當內存或者cpu佔用超過多少,就自動回收內存。

一般來說就可以解決了。但仍然會出現個別網站因為程序問題,不能正確釋放。
那麼,怎麼樣才能找到是哪一個網站的?解決辦法:

1、在任務管理器中增加顯示pid欄位。就可以看到佔用內存或者cpu最高的進程pid
2、在命令提示符下運行iisapp -a。注意,第一次運行,會提示沒有js支持,點擊確定。然後再次運行就可以了。這樣就可以看到pid對應的應用程序池
3、到iis中察看該應用程序池對應的網站,就可以了。

3. 伺服器運行越來越慢怎麼辦

1、硬體性能不足,檢查伺服器的配置,如果您伺服器配置一直沒有升級,而程序的佔用一直在加,是要可能導致伺服器運行速度變慢
2、系統方面檢查,殺一下毒,看伺服器是否有中毒沒有
3、重啟一下伺服器,伺服器長時間運行,裡面佔用資源越來越多,您可以重啟一下清除一下緩存壓力
4、帶寬方面,可以檢查一下目前伺服器所接入的帶寬,再對比一下伺服器平常使用的帶寬情況,如果是帶寬不足導致,升級一下帶寬就可以解決

4. 為什麼微軟的網站訪問速度都這么慢

聯通、電信、移動,不管哪家寬頻運營商速度都比較的慢是無法控制的。onedrive的伺服器在國外,所以同步過程比較慢是正常的。

要優化Web伺服器的性能,我們先來看看Web伺服器在web頁面處理上的步驟:Web瀏覽器向一個特定的伺服器發出Web頁面請求;Web伺服器接收到web頁面請求後,尋找所請求的web頁面。

並將所請求的Web頁面傳送給Web瀏覽器;Web瀏覽器接收到所請求的web頁面內容,並將它顯示出來。上面三個步驟都關系Web伺服器,但實際Web伺服器性能相關最大的是在第2步,這里Web伺服器需要尋找來自瀏覽器所請求的Web頁面內容。

我們知道,Web頁面內容有靜態的,也有動態的,靜態的內容,web伺服器可以直接將結果發回給瀏覽器,對於動態內容,則通常需要交給應用伺服器先處理,由應用伺服器返回結果。當然,也有Web伺服器本身可以處理動態內容的。

例如IIS就可以自已解釋處理ASP,ASP.NET這兩種微軟的動態網頁腳本語言。從上面簡要的分析里,我們大致可以得到這樣的結論,影響Web頁面訪問的影響因素會有這幾個:Web伺服器從磁碟中讀取靜態頁面內容的速度。

也即時間;Web伺服器判定請求內容是靜態還是動態內容的時間;Web伺服器轉發請求給應用伺服器的時間;應用伺服器處理(解釋)動態內容所需的時間;Web伺服器返回Web內容給瀏覽器的響應時間。

Web伺服器接收來自瀏覽器請求的處理性能;Web訪問請求數據在網路上傳輸的時間:包括從瀏覽器到伺服器,和從伺服器到瀏覽器兩部分;瀏覽器本地計算和渲染Web內容的時間,即接收內容後展現內容的時間。

上面8項很容易理解,也很直接,其實還有以下幾項也是關乎Web頁面訪問速度體驗的因素,你可以思考下是否如此?或者說是否會影響到頁面訪問性能。

5. 如何優化web伺服器的訪問速度

網站運營的任何時期,網站訪問速度都是至關重要的部分,它是網站友好體驗中最基本的一項,如果訪問體驗都令人不滿意,那麼後期所做的營銷推廣模式都有可能徒勞無功,因為網路中客戶的選擇成本很低,加上普遍客戶的耐心都不高,頁面訪問超過6秒客戶就會選擇離開,這對於一些流量本來就不高的企業網站來說無疑是雪上加霜。

一、升級正在使用中的伺服器

進行伺服器升級工作之前,要考慮多方面的問題,是升級已有的伺服器還是購置新的伺服器設備須根據實際情況抉擇。首先來說升級現有的伺服器設備,一般來說網站運營到後期隨著業務不斷增加,多平台應用的開發對於伺服器性能的要求也逐步提升,長而久之伺服器遇到性能瓶頸也是情理之中的事情,對於這種情況,我們可以通過升級伺服器(例如增加硬體設備或網路帶寬)等相關配置來滿足不斷擴大的業務需求,那麼伺服器性能瓶頸問題就可以得到解決。

二、優化正在使用的伺服器

不管是完成升級後的伺服器,還是新購置的伺服器,我們都要對其進行優化,從而提升伺服器的性能以及利用率。如何優化伺服器?作為在國互網工作到現在的資深IDC工作人員,小編認為大概分為以下四個方面

要點一:盡可能的減少HTTP請求數

從客戶訪問網站頁面到整個頁面內容完全展現出來,這其中要花費較多的時間來下載各種Scripts、CSS樣式表、Flash以及圖片,而每一類下載都相當於一次HTTP請求,這樣的請求越多網站被完全載入出來所花的時間會越長,意味著客戶端的訪問會很慢,那麼此時就需要盡可能的減少HTTP請求數,通常我們可以直接把css和js寫入到頁面中,避免了外部的調用;或者我們可以把CSS文件和JS文件分來,在後台再進行合並,這樣客戶端瀏覽器相當於一次請求。這是小編在國互網美女前端那學來的。

要點二:降低DNS查詢時間

眾所周知網路伺服器端的域名和IP地址是相互對應的,當客戶端發出請求時,計算機還需要通過域名和IP地址的相互轉換來判斷,而這個轉換工作便是域名解析DNS,通常DNS的查詢需要10~20毫秒時間,客戶端瀏覽器也只會等待DNS查詢結束之後才會載入此域名下的內容。因此,我們要加快頁面的訪問速度,就可以從降低DNS查詢時間方面去做改善。

要點三:啟用伺服器Gzip壓縮功能

對於大中型網站來說,頁面的內容多且比較多樣化,單個頁面的大小可能是幾百K以上了,客戶端訪問的時候下載會比較慢,此時我們可以採用伺服器Gzip頁面壓縮功能,可以將一個大小為100K的頁面文件壓縮成25K以下,這樣就可以減少網路傳輸的數量從而提高客戶端訪問速度。一般伺服器都是可以使用Gzip壓縮功能的,並且能夠針對JS文件、CSS文件和Html進行壓縮,多方面去進行優化網站訪問速度。

要點四:推薦大中型網站使用CDN加速工具

CDN加速是目前大型網站普遍使用的頁面加速方式,它對於網站優化幾乎沒有影響的,基本原理是將網站鏡像備份到很多伺服器節點上,使伺服器節點周圍的用戶訪問速度更快,從而提升客戶端高速訪問網站的體驗;但是並不是所有的網站都適合使用CDN加速,一般對於小規模站點個人站的話,就不需要使用CDN加速,畢竟從長期來看這可是一筆不小的開支;建議圖片站以及多媒體站點可使用CDN加速。

希望以上知識能夠幫到您

6. 網站伺服器響應變慢應該怎麼辦

網站優化一般從這幾個方面考慮:
第一:最簡單暴力的方式是升級伺服器配置,升級cup,內存,硬碟,網路帶寬,這是最簡單直接的方式;但比較花錢。
那麼這幾樣要素是怎樣影響網站響應速度的呢?硬碟有個讀寫效率問題,如果你的網站需要讀取存儲在伺服器上的文件等東西,那麼這個磁碟io就會影響效率;內存又是如何影響的呢?內存和硬碟的影響比較類似,但內存存儲的是較為及時數據,和程序聯系更為緊密一點,存儲處理效率
在很大因素上能直接受到影響。最後就是網路帶寬了,當網路帶寬較低,數據傳輸的效率就會被限制,即使你的伺服器各方面配置很ok,那也是沒辦法的,就如同被限制了高消費的富豪一樣,你有限范圍內有錢花不出去。。
第二:分析具體瓶頸,對應解決。
如果網站用戶規模較大,響應頻繁,這個時候就要考慮網站本身研發的質量如何?優化相關代碼,如將頁面靜態化,減少頁面和服務端響應次數,減少服務端介面響應的數據量,去除代碼中低端耗時的部分,減少資料庫操作,優化sql執行效率,前後端分離等等,手段非常多;這些都是在代碼層面進行優化。

7. WEB伺服器訪問速度慢

你檢查一下你的CPU是不是正常的。CPU是百分百那麼兩可能。硬體故障。或程序有問題造成CPU百分百。如果CPU是正常的。那麼不用說了。帶寬不足了。

8. Web伺服器性能和站點訪問性能該如何優化

今天小編要跟大家分享的文章是關於Web伺服器性能和站點訪問性能該如何優化?正在從web前端工作的小夥伴們來和小編一起看一看吧!

一、優化思路淺析


要優化Web伺服器的性能,我們先來看看Web伺服器在web頁面處理上的步驟:


1、Web瀏覽器向一個特定的伺服器發出Web頁面請求;


2、Web伺服器接收到web頁面請求後,尋找所請求的web頁面,並將所請求的Web頁面傳送給Web瀏覽器;


3、Web瀏覽器接收到所請求的web頁面內容,並將它顯示出來。


上面三個步驟都關系Web伺服器,但實際Web伺服器性能相關最大的是在第2步,這里Web伺服器需要尋找來自瀏覽器所請求的Web
頁面內容。


我們知道,Web頁面內容有靜態的,也有動態的,靜態的內容,web
伺服器可以直接將結果發回給瀏覽器,對於動態內容,則通常需要交給應用伺服器先處理,由應用伺服器返回結果。


當然,也有Web伺服器本身可以處理動態內容的,例如IIS就可以自已解釋處理ASP,ASP.NET這兩種微軟的動態網頁腳本語言。


從上面簡要的分析里,我們大致可以得到這樣的結論,影響Web頁面訪問的影響因素會有這幾個:


1、Web伺服器從磁碟中讀取靜態頁面內容的速度,也即時間;


2、Web伺服器判定請求內容是靜態還是動態內容的時間;


3、Web伺服器轉發請求給應用伺服器的時間;


4、應用伺服器處理(解釋)動態內容所需的時間;


5、Web伺服器返回Web內容給瀏覽器的響應時間;


6、Web伺服器接收來自瀏覽器請求的處理性能;


7、Web訪問請求數據在網路上傳輸的時間:包括從瀏覽器到伺服器,和從伺服器到瀏覽器兩部分;


8、瀏覽器本地計算和渲染Web內容的時間,即接收內容後展現內容的時間。


上面8項很容易理解,也很直接,其實還有以下幾項也是關乎Web
頁面訪問速度體驗的因素,你可以思考下是否如此?或者說是否會影響到頁面訪問性能。


§Web伺服器執行安全策略檢查的時間,或者說性能;


§Web伺服器讀取日誌文件、寫日誌內容、關閉對日誌文件訪問的時間,先讀後寫再關閉,這三步中的讀與寫又涉及到磁碟訪問性能因素;


§同時與Web伺服器連接會話的客戶端數量大小,即並發訪問量多大。


我們可以將上面的影響因素抽像出來,那麼就是:


1、Web伺服器磁碟性能;


2、Web伺服器與應用伺服器交互的性能;


3、應用伺服器處理動態內容的性能,或者說動態內容應用處理性能;


4、客戶端與Web伺服器的連接速度,即網路傳輸性能;


5、Web瀏覽器解釋和渲染Web內容的性能;


6、Web訪問並發性能。


反映到我們進行性能優化,可以入手的角度就有:


1、增加帶寬,包括伺服器和客戶端兩邊的Internet連接帶寬;


2、加快動態內容的處理性能;


3、盡可能多地使用靜態內容,這樣Web伺服器就可以無需請求應用伺服器,直接將Web內容發給瀏覽器端,這里可以入手的方案又有:


動態內容緩存


動態內容靜態化


多台伺服器負載均衡同時處理大量的並發訪問;


提升伺服器磁碟訪問性能,也即通常所說的I/O性能;


減少網頁中的HTTP請求數;


更換更好性能的Web伺服器;


合理部署伺服器,在離客戶端更近的地方部署伺服器,已經證明可以明顯地提升訪問性能。


二、性能優化實踐


經過前面小節的簡要分析,相信你對優化Web伺服器有一定的思路了,你可以從硬體層面、軟體層面、Web代碼三個層面去優化。


下面我們結合一個具體的實例來實踐一回,本文所舉例是一個小型的Web
站點,部分數據系假設,如有類同,純屬巧合,僅起拋磚引玉之用。在實際工作中,如果碰到大站點,你可以參考此處的分析,修改優化方案。


1.站點簡介


一個社區論壇站點,採用Discuz!論壇程序構建,該程序採用主流的PHP+MySQL組成。


網站目前有近5萬注冊用戶,絕大多數是國內的用戶,活躍用戶數在一半左右,每天平均PV在15~20萬,獨立訪問IP數在8000
左右。


2.Web伺服器性能優化需求


網站現部署在國外的伺服器,租用虛擬主機來運營,因為訪問量比較大,所以經常會收到虛擬主機服務商的流量很大的通知,要求控制下訪問量。


另外,虛擬主機的伺服器在美國,沒有在國內租用虛擬主機的原因是國內網站在備案方面非常繁瑣,在網站一開始運營時數據量和訪問量都比較小,所以對性能要求不高,數據量小,所以伺服器在查詢處理數據時速度比較快,也讓人感覺訪問速度不慢,現在隨著數據量和訪問量的不斷上升,訪問速度已明顯下降,到了需要改善訪問性能的時候了。


基於目前該社區網站的情況,提出的優化需求是,國內訪問速度需要提升一倍,目前首頁載入時間需要40秒左右,希望優化後能在20
秒以內將首頁載入完成。


另外提出網站數據能夠每天自動備份一次,備份數據保留一個月的,以便隨時恢復。


上述兩點需求,其中第一條才是性能優化需求,第二條是額外的需求了。


3.性能優化方案


根據其網站的現狀和優化需求,結合自己的經驗,加上谷歌的搜索,同時與網站主不斷確認溝通,最終得到以下性能優化方案:


由虛擬主機部署改為獨立伺服器部署


虛擬主機受限比較多,無法自己自定義配置Web伺服器,無法配置PHP
動態緩存,而且獨立伺服器可以獨享內存、處理器資源,不再受虛擬主機商對每個虛擬主機用戶的內存和處理器資源佔用限制。處理器資源和內存資源,對接受更多並發訪問有直接性能提升效果。


獨立伺服器,我們選用Linode2048型號,2G內存,4核處理器(Linode所有VPS都是四核處理器),80G硬碟空間,800G
網路流量。


由Windows操作系統改為Linux操作系統


網站使用的是PHP+MySQL程序,PHP在Windows下的性能,受限於IIS需要通過ISAPI形式調用PHP,所以性能不如
Linux下Apache直接通過PHP模塊解釋PHP,更不如Nginx與PHP-FPM
的性能,既然使用了獨立伺服器,操作系統也可以自己確定,Linux系統我們選用了熟悉的UbuntuLinuxServer10.04(一年前還沒有
12.04),^-^。


Web伺服器採用Nginx,而不使用Apache


選用Nginx而不用Apache的原因非常直接和乾脆,因為站點里有很多靜態的附件文件,在處理靜態內容上,Nginx性能是Apache
的差不多10倍。


在PHP解釋和偽靜態規則方面,Apache要比Nginx強,但這不影響我們放棄它,為緩解這一點,我們在後面對PHP
進行了動態緩存。


對PHP查詢進行動態緩存,使用eAccelerator這個加速器


PHP加速器是一個為了提高PHP執行效率,從而緩存起PHP的操作碼,這樣PHP後面執行就不用解析轉換了,可以直接調用PHP
操作碼,這樣速度上就提高了不少。


eAccelerator是一個開源PHP加速器,優化和動態內容緩存,提高了PHP腳本的緩存性能,使得PHP
腳本在編譯的狀態下,對伺服器的開銷幾乎完全消除。它還有對腳本起優化作用,以加快其執行效率。使得的PHP程序代碼執效率能提高1-10
倍,這個加速還是非常明顯的。


具體地,我們計劃對eAccelerator進行以下設置優化:


§緩存使用物理內存來進行,不使用磁碟來緩存。我們知道內存的讀寫性能是硬碟的N倍,所以在內存資源可以安排情況下,強烈建議使用內存來保存
eAccelerator的緩存內容。


§緩存大小設置為32MB,這個值是操作系統默認支持最大的緩存容量。雖然可以通過修改配置文件來加大這個值,但我們覺得沒有必要,所以就放棄了。


Nginx性能優化


選用了Nginx,雖然它的性能很好,但我們仍然需要對它進行性能優化,在這個案例中,我們做了以下優化:


§使用8個進程,每個進程大約需要20M內存消耗,這里一共使用了150M左右的內存。


§充分使用主伺服器的CPU內核:四核,使用CPU粘性配置選項(worker_cpu_affinity),每核處理器分配兩個進程。


§開啟gzip壓縮功能:gzip壓縮對JS,CSS,XML壓縮效果非常好,能壓縮一半,即減少一倍的傳輸時間;對圖片文件,JPG
已經壓縮過的,它的壓縮性能要少一些。


§圖片本地緩存1天:網站上的圖片很多,通常一張圖片上傳後,不會頻繁的修改,只會頻繁的訪問,所以將圖片放在Nginx
緩存里,可以減少伺服器訪問載入次數,提升訪問速度。


§JS、CSS文件本地緩存7
天:這兩種網頁文件,平時都不會去修改它,將它緩存起來,可以減少載入次數,提升訪問速度。為什麼這兩種文件不和圖片一起設置緩存有效期,是考慮了不同文件的修改頻率不一樣。


§Nginx日誌每天切割一次:這個優化項能大大減小Nginx日誌文件的大小,經過一周的查看,每天的日誌文件是50M
左右,如果不是每天切割,用月切割,那一個月的日誌文件就是幾個G,要Web
伺服器在內存里載入這么大的文件,系統本身內存不夠用,就自然會用到磁碟來緩存,這就影響性能。每天50M左右,在內存上完全可以順利載入,這樣Nginx
在處理訪問時,可以快速的保存訪問日誌。


經過上述幾個優化項目,Nginx這邊一共需要佔用200M左右內存資源。


對PHPCGI進程性能進行優化


Nginx沒有PHP模塊,所以它對PHP的支持是通過PHP-FPM來實現的,PHP-FPM
是跑進程來處理並發請求,在這個案例中,我們配置了20個進程,每個進程差不多佔用20M左右內存資源,一共是400M左右。


同時,PHP-FPM與Nginx交互機制,選用LinuxSocket模式而不是TCP協議埠,Socks是系統級處理模式,socks
也就是一個文件連接,而TCP協議埠,需要經過網路協議處理,性能不如前者,所以我們選擇了前者。


MySQL資料庫性能優化


因為網站主程序是選用他人開發的開源程序,所以對資料庫查詢的程序優化我們無法處理,只能從MySQL本身尋找突破口。


我們可以想像一下,對於論壇網站,通常看貼、查貼的訪問量要遠大於創建貼子、回復貼子的訪問量,體現在MySQL
資料庫上,就是讀表與查詢表數據的連接處理更多。


因此我們要選擇對讀表、查詢性能更好的存儲引擎,結合以前了解的知識,MySQL預設的MyISAM
引擎就是被設計為適合處理讀頻率遠大於寫頻率的環境,查詢效率相當可觀,而且內存佔用很少,這也與我們租用低內存配置的VPS相符。


具體到MySQL配置參數的優化上,受限於伺服器上內存資源本身有限,就直接採用預設的中型環境配置文件。


內容分發網路應用


站點每天十多萬的訪問,上萬獨立IP
訪問,查看先前的訪問統計,訪問來自國內各個地區,使用多種網路連接訪問進來,為保證來自各網路的用戶訪問速度,同時也減少對網站伺服器的請求,我們採用了CDN
來分發靜態內容,這樣各地的用戶可以就近訪問到已緩存在CDN上的文件,CDN
服務商會在靜態內容第一次訪問時緩存到他們全國各地的伺服器上,當第二次訪問時,用戶實際是沒有連接到網站伺服器上獲取文件的,而是直接從CDN
伺服器上獲取,可以明顯的提升網站性能。


以上就是小編今天為大家分享的關於Web伺服器性能和站點訪問性能該如何優化的文章,希望本篇文章能夠對正在從事web前端工作的小夥伴們有所幫助。想要了解更多web前端相關知識記得關注北大青鳥web培訓官網。最後祝願小夥伴們工作順利!


9. 網站訪問過慢是什麼原因造成的,解決辦法有哪些

網站訪問過慢的原因有哪些?

網站打開速度慢受很多因素的影響,簡單歸納下常見的幾個原因:

1. 共享主機伺服器不堪重負,響應速度慢;

2. 網站的圖片和內容太大,需要花費很多時間下載;

3. 網站使用了太多不同的腳本和圖片,這些腳本和圖片沒有針對快速載入網站進行優化,載入時間長;

4. 網站的伺服器位置與您網站的訪問者位於不同的地理位置。

如何解決網站訪問過慢?

網站訪問過慢,除了會給用戶帶來不好的體驗感,各大搜索引擎也明確指出,網站的訪問速度會影響搜索結果的排名。而解決網站訪問過慢,還需要從以下方面進行優化:

1. 選擇可靠的雲服務商

選擇一家值得信賴的雲服務商和一款合適的雲伺服器,一家值得信賴的雲服務商擁有堅實可靠的硬體,這是提高速度的必備條件。銳速雲是國內為數不多具有ISP/IDC雙資質的專業雲計算服務商,自主研發的純SSD架構雲伺服器,以50,000IOPS隨機讀寫速度、800Mb/s吞吐量的高性能數值刷新行業記錄,現五周年活動還有超低價雲伺服器參與秒殺,最低166元/年起。

2. 優化網站圖片和代碼

隨著用戶對網站高質量圖片的追求,圖片尺寸成為影響網站載入速度的重要問題,注意以下幾點可以優化網站圖片載入速度:1、裁剪圖片,縮小尺寸;2、盡量使用JPEG或者PNG格式,避免使用BMP和TIFF格式;3、調整圖片的大小。

網頁和網站的運用大都依賴於CSS和Java技術,減少這些文本的大小非常重要,有效的方法就是壓縮它們的大小,這意味著要刪除代碼中的注釋、多餘的空格、額外的換行符和分隔符,以壓縮代碼。同時,減少需要傳輸的數據量來縮短頁面載入的時間。

3. 使用CDN加速服務

CDN的全稱是Content Delivery Network,即內容分發網路。CDN是構建在網路之上的內容分發網路,依靠部署在各地的邊緣伺服器,通過中心平台的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,降低網路擁塞,提高用戶訪問響應速度和命中率。CDN的關鍵技術主要有內容存儲和分發技術。

那麼我們通俗一點講什麼是CDN,簡單一點理解就是一個中轉站,在給網站主提供一定的方便,用戶也可以享受到一定的方便,在提高打開網站和訪問速度上面都有大大的提升,使用CDN的好處顯而易見。

未使用CDN和使用CDN的區別,顯然,使用CDN可以有效提高訪問速度。

而銳速雲 CDN加速則是在傳統CDN加速基礎上實現的對數據網路加速進一步優化的融合管理服務。除了服務於音視頻點播,文件、應用與web加速,以及各類增值場景外,CDN加速還通過全方位的CDN質量監控,以及智能易用的加速節點調度等功能,保障用戶服務的連續性,提供穩定快速的網路訪問質量。

那麼對網站而言,使用CDN加速有什麼好處呢?

1、網站加速,利於搜索引擎排名

許多搜索引擎都會把網站的打開速度當做一個比較重要的指標,所以網站打開的速度會影響搜索排名。使用CDN加速之後,網站打開速度變快,就可以減少跳出率,也可以增加用戶對網站的友好體驗。

2、有利於提高網站的轉化率

毫無疑問,用戶的訪問網站的時間提高了,跳出率減少了,當然會利於網站的轉化率和銷售量。現在大環境下的人們都比較浮躁,我想誰都沒有耐心去等一個需要10秒才能打開的網站,這樣的網站一開始就不友好,更別想提高網站的轉化率了。

3、提升網站的穩定性和安全性

CDN加速因為節點分散,攻擊者比較難下手,攻擊一個節點僅僅是影響一個節點的緩存訪問而已,並且銳速雲CDN加速的「智能調度」會自動的啟用另一個節點,CDN服務節點數量夠多,那麼攻擊者需要的流量包就會呈幾何級的增加,這樣攻擊成本自然就高了。

10. web伺服器訪問緩慢,作為運維人員,如何定位故障

遇到伺服器故障,問題出現的原因很少可以一下就想到。我們基本上都會從以下步驟入手:

一、盡可能搞清楚問題的前因後果

不要一下子就扎到伺服器前面,你需要先搞明白對這台伺服器有多少已知的情況,還有故障的具體情況。不然你很可能就是在無的放矢。

必須搞清楚的問題有:

故障的表現是什麼?無響應?報錯?
故障是什麼時候發現的?
故障是否可重現?
有沒有出現的規律(比如每小時出現一次)

最後一次對整個平台進行更新的內容是什麼(代碼、伺服器等)?
故障影響的特定用戶群是什麼樣的(已登錄的, 退出的, 某個地域的…)?

基礎架構(物理的、邏輯的)的文檔是否能找到?
是否有監控平台可用? (比如Munin、Zabbix、 Nagios、 New Relic…
什麼都可以)
是否有日誌可以查看?. (比如Loggly、Airbrake、 Graylog…)

最後兩個是最方便的信息來源,不過別抱太大希望,基本上它們都不會有。只能再繼續摸索了。



二、有誰在?

代碼如下:


$ w
$ last

用這兩個命令看看都有誰在線,有哪些用戶訪問過。這不是什麼關鍵步驟,不過最好別在其他用戶正幹活的時候來調試系統。有道是一山不容二虎嘛。(ne cook in
the kitchen is enough.)

三、之前發生了什麼?

$
history查看一下之前伺服器上執行過的命令。看一下總是沒錯的,加上前面看的誰登錄過的信息,應該有點用。另外作為admin要注意,不要利用自己的許可權去侵犯別人的隱私哦。

到這里先提醒一下,等會你可能會需要更新 HISTTIMEFORMAT
環境變數來顯示這些命令被執行的時間。對要不然光看到一堆不知道啥時候執行的命令,同樣會令人抓狂的。

四、現在在運行的進程是啥?

代碼如下:


$ pstree -a
$ ps aux

這都是查看現有進程的。 ps aux 的結果比較雜亂, pstree -a 的結果比較簡單明了,可以看到正在運行的進程及相關用戶。

五、監聽的網路服務

代碼如下:


$ netstat -ntlp
$ netstat -nulp
$
netstat -nxlp

我一般都分開運行這三個命令,不想一下子看到列出一大堆所有的服務。netstat -nalp倒也可以。不過我絕不會用 numeric 選項
(鄙人一點淺薄的看法:IP 地址看起來更方便)。

找到所有正在運行的服務,檢查它們是否應該運行。查看各個監聽埠。在netstat顯示的服務列表中的PID 和 ps aux 進程列表中的是一樣的。

如果伺服器上有好幾個Java或者Erlang什麼的進程在同時運行,能夠按PID分別找到每個進程就很重要了。

通常我們建議每台伺服器上運行的服務少一點,必要時可以增加伺服器。如果你看到一台伺服器上有三四十個監聽埠開著,那還是做個記錄,回頭有空的時候清理一下,重新組織一下伺服器。

六、CPU 和內存

代碼如下:


$ free -m
$ uptime
$ top
$
htop

注意以下問題:

還有空餘的內存嗎? 伺服器是否正在內存和硬碟之間進行swap?
還有剩餘的CPU嗎? 伺服器是幾核的? 是否有某些CPU核負載過多了?

伺服器最大的負載來自什麼地方? 平均負載是多少?

七、硬體

代碼如下:


$ lspci
$ dmidecode
$
ethtool

有很多伺服器還是裸機狀態,可以看一下:

找到RAID 卡 (是否帶BBU備用電池?)、 CPU、空餘的內存插槽。根據這些情況可以大致了解硬體問題的來源和性能改進的辦法。
網卡是否設置好?
是否正運行在半雙工狀態? 速度是10MBps? 有沒有 TX/RX 報錯?

八、IO 性能

代碼如下:


$ iostat -kx 2
$ vmstat 2 10
$ mpstat
2 10
$ dstat --top-io --top-bio

這些命令對於調試後端性能非常有用。

檢查磁碟使用量:伺服器硬碟是否已滿?
是否開啟了swap交換模式 (si/so)?
CPU被誰佔用:系統進程? 用戶進程? 虛擬機?

dstat 是我的最愛。用它可以看到誰在進行 IO: 是不是MySQL吃掉了所有的系統資源? 還是你的PHP進程?

九、掛載點 和 文件系統

代碼如下:


$ mount
$ cat /etc/fstab
$ vgs
$
pvs
$ lvs
$ df -h
$ lsof +D / /* beware not to kill your box
*/

一共掛載了多少文件系統?
有沒有某個服務專用的文件系統? (比如MySQL?)
文件系統的掛載選項是什麼: noatime?
default? 有沒有文件系統被重新掛載為只讀模式了?
磁碟空間是否還有剩餘?
是否有大文件被刪除但沒有清空?

如果磁碟空間有問題,你是否還有空間來擴展一個分區?

十、內核、中斷和網路

代碼如下:


$ sysctl -a | grep ...
$ cat
/proc/interrupts
$ cat /proc/net/ip_conntrack /* may take some time on busy
servers */
$ netstat
$ ss -s

你的中斷請求是否是均衡地分配給CPU處理,還是會有某個CPU的核因為大量的網路中斷請求或者RAID請求而過載了?

SWAP交換的設置是什麼?對於工作站來說swappinness 設為 60 就很好,
不過對於伺服器就太糟了:你最好永遠不要讓伺服器做SWAP交換,不然對磁碟的讀寫會鎖死SWAP進程。

conntrack_max 是否設的足夠大,能應付你伺服器的流量?
在不同狀態下(TIME_WAIT, …)TCP連接時間的設置是怎樣的?

如果要顯示所有存在的連接,netstat 會比較慢, 你可以先用 ss 看一下總體情況。
你還可以看一下 Linux TCP tuning
了解網路性能調優的一些要點。

十一、系統日誌和內核消息

代碼如下:


$ dmesg
$ less /var/log/messages
$
less /var/log/secure
$ less /var/log/auth

查看錯誤和警告消息,比如看看是不是很多關於連接數過多導致?
看看是否有硬體錯誤或文件系統錯誤?

分析是否能將這些錯誤事件和前面發現的疑點進行時間上的比對。

十二、定時任務

代碼如下:


$ ls /etc/cron* + cat
$ for user in
$(cat /etc/passwd | cut -f1 -d:); do crontab -l -u $user; done

是否有某個定時任務運行過於頻繁?
是否有些用戶提交了隱藏的定時任務?
在出現故障的時候,是否正好有某個備份任務在執行?

十三、應用系統日誌

這里邊可分析的東西就多了,
不過恐怕你作為運維人員是沒功夫去仔細研究它的。關注那些明顯的問題,比如在一個典型的LAMP(Linux+Apache+Mysql+Perl)應用環境里:

Apache & Nginx; 查找訪問和錯誤日誌, 直接找 5xx 錯誤, 再看看是否有 limit_zone 錯誤。
MySQL;
在mysql.log找錯誤消息,看看有沒有結構損壞的表, 是否有innodb修復進程在運行,是否有disk/index/query 問題.

PHP-FPM; 如果設定了 php-slow 日誌, 直接找錯誤信息 (php, mysql, memcache, …),如果沒設定,趕緊設定。

Varnish; 在varnishlog 和 varnishstat 里, 檢查 hit/miss比.
看看配置信息里是否遺漏了什麼規則,使最終用戶可以直接攻擊你的後端?
HA-Proxy;
後端的狀況如何?健康狀況檢查是否成功?是前端還是後端的隊列大小達到最大值了?

結論

經過這5分鍾之後,你應該對如下情況比較清楚了:

在伺服器上運行的都是些啥?
這個故障看起來是和 IO/硬體/網路 或者 系統配置 (有問題的代碼、系統內核調優, …)相關。

這個故障是否有你熟悉的一些特徵?比如對資料庫索引使用不當,或者太多的apache後台進程。

你甚至有可能找到真正的故障源頭。就算還沒有找到,搞清楚了上面這些情況之後,你現在也具備了深挖下去的條件。繼續努力吧!