單臺web服務(wù)器如何盡可能的提高網(wǎng)站性能
我覺得首先要選擇一個合適的環(huán)境,對于大多數(shù)php站點來說,運行在lnmp(linux+nginx+mysql+php)環(huán)境下是個理想的選擇.
首先一點linux對比win的優(yōu)勢我就不說了。
其次nginx的優(yōu)勢總結(jié)起來就是負載均衡,高并發(fā)性能優(yōu)異。
這里php采用fastcgi的方式接入nginx,php5.3 自帶的php-fpm已經(jīng)很好了,相比于apache的php模塊方式,這里由php自己直接處理php請求是比較好的,并且可調(diào)控進程數(shù)量以優(yōu)化并發(fā)性能。
上面說的是基本環(huán)境,我有一臺q6600的老四核,4G內(nèi)存的linux服務(wù)器,上面跑了幾十個站點,最高跑到90M帶寬,成功hold住!
下面說說程序方面的優(yōu)化。
我們知道,靜態(tài)頁面的速度比動態(tài)頁面要快,尤其是在nginx下,靜態(tài)頁面直接由nginx提供服務(wù),性能尤其高。而動態(tài)頁面,雖然fastcgi也很好,但是相比于nginx直接處理靜態(tài)頁面,還是有點差距的。
這里介紹兩個好東西,一個是nginx自身的緩存功能proxy_cache和fastcgi_cache,然后還有一個nginx模塊ngx_cache_purge用于清理指定url的緩存。
這里單臺服務(wù)器我們主要使用的是fastcgi_cache,可以指定的url下,將php腳本的執(zhí)行結(jié)果緩存到磁盤和內(nèi)存上,并可以指定過期時間,第二次訪問的時候,由nginx直接取緩存文件,就相當于靜態(tài)頁面了,效率當然很高。
說完nginx再說說php,nginx用于緩存整個頁面,而有的頁面我們不需要緩存全部,只需要緩存一些短數(shù)據(jù),比如一些數(shù)組,訪問記錄之類的臨時新內(nèi)容。傳統(tǒng)的php是直接采用文件式緩存,就像dedecms里data/cache目錄,里面存放的就是很多緩存文件,主要是用來避免頻繁的數(shù)據(jù)庫查詢。一般情況下,文件緩存也夠了,但是要追求極致,尤其是高并發(fā)下,不如試試memcached吧,很好的一個東西,作用是將一些字符串以鍵值對的形式存放到服務(wù)器內(nèi)存中,指定過期時間,下次用的時候直接從內(nèi)存中取,不消耗磁盤I/O,速度也不是一個級別的,原理和文件緩存一樣。
暫時能想到的就是這么多,其實主旨就是一個:緩存。只是緩存的方式不同罷了。那么如何選擇合適的緩存方式,就是我們開發(fā)人員需要考慮的事情了。
相關(guān)文章
Nginx+Tomcat反向代理與負載均衡的實現(xiàn)
這篇文章給大家詳細介紹了如何實現(xiàn)Nginx+Tomcat反向代理與負載均衡,文中的流程步驟介紹的非常詳細對我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-07-07
18個運維必知的Nginx代理緩存配置技巧(你都掌握了哪些呢)
這篇文章主要介紹了18個運維必知的Nginx代理緩存配置技巧(你都掌握了哪些呢),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09

