編者按:本文來自微信公眾帳號道哥的黑板報(帳號ID:taosay)於2013年9月17日發布的文章,經道哥授權,以博文共賞的形式分享給InfoQ中文站的讀者們。本文雖然是個人網站最佳化的經驗,但很多經驗並不僅限於個人網站的業務情境,對於各類網站的維護人員均有參考價值。
前些時終於騰出空來把 taosay.net 的網站好好的整理了一下,藉此把一點心得分享給大家。這些經驗都是比較基礎的東西,主要是讓對建站感興趣的朋友們可以少走一點彎路。
首先我的個人網站 taosay.net 是用Wordpress搭建的,這是一套開源的部落格系統。為什麼用Wordpress搭建呢?因為Wordpress已經是世界上最大的開源部落格系統了,核心代碼的安全性已經有了很大的提高,近年來的主要漏洞都是出在第三方開發人員寫的外掛程式上,而非核心代碼中。Wordpress有大量的外掛程式可供選擇,可以在不用自己寫代碼的情況下完成大部分的網站最佳化工作,因此在精力有限的情況下,是個人建站的第一選擇。
關於如何購買伺服器,搭建資料庫、webserver,安裝Wordpress等內容,可以參考Mactalk寫的「趣談個人建站」一文。今天我要寫的,主要是在網站建好後如何最佳化的事情。
關於效能
我的網站 taosay.net 自從上線後,崩潰過好幾次,都是因為突發性的訪問量激增。比較典型的是「中國駭客傳說」系列文章寫出來後,引起了極大的關注。網站的並發線上數大增的後果,首先是資料庫扛不住了。因為Nginx本身的效能非常好,可以支援數萬的並發,所以瓶頸主要還是在資料庫上。
因此最佳化資料庫連接是第一步。常見的做法是用記憶體做cache,把資料庫裡的內容提前取出讀到記憶體裡,使用者再請求時,就不直接讀資料庫,而是讀記憶體裡的資料,從而緩解了資料庫的壓力。過去比較常用的緩衝軟體是memcached,現在則比較流行redis。兩者都是以key-value的形式把資料存放區在記憶體中。
在網上隨便找篇攻略按照提示配置好,過程我就不贅述了。需要注意的是memcached的連接埠需要做訪問限制,因為一般是沒有認證的,只要連上就能讀資料。很多大互連網公司如搜狐、新浪都曾經因為沒有限制快取服務的連接埠訪問而造成過資訊泄露。
安裝好memcached後,再去Wordpress的外掛程式列表裡,選擇搜尋「cache」,或「memcache」之類的關鍵詞,可以找到很多相關的外掛程式。根據說明安裝好這些外掛程式後,一般就可以無縫銜接緩衝軟體和Wordpress了。我自己用的方案是memcached搭配WP-FFPC外掛程式。
但後來我發現WP-FFPC這個外掛程式和別的外掛程式有衝突,所以暫時停用了,而改用了其他的最佳化方案。
正如前所述,瓶頸主要出在資料庫上,硬碟IO也不是大的瓶頸,而Nginx的並發數很高,所以我們還有一種最佳化方法,是將所有的文章,都產生一個靜態HTML檔案,這樣使用者訪問的時候,也不需要直接讀資料庫,而是從硬碟裡讀出靜態HTML頁面。我用了一個叫WP Super Cache的外掛程式來完成這個工作。
但網站真正的訪問速度想提高,還有一種比較重要的方式,就是藉助CDN,把網站的靜態檔案都緩衝到CDN服務商的網路中,從而實現加速。CDN的全稱是「內容分髮網絡」,原理是利用緩衝技術,把一些檔案快取在遍布全國的CDN節點中,從而讓網站的使用者無須訪問伺服器,直接從就近的節點中擷取內容。目前使用CDN已經成為大中型互連網公司的標準配置。
使用CDN主要有兩個好處,一是圖片、js、css、flash等靜態資源會消耗網站流量的80%,使用CDN後,這80%的流量就節約下來了,從而緩解了自己伺服器的頻寬消耗;二是網站使用者會在最近的CDN節點處直接擷取靜態資源,而不必訪問伺服器來源站點 -- 比如湖南電信的使用者可以從CDN在湖南電信的節點擷取圖片、js、css等,而不必再訪問遠在美國的來源站點 -- 從而可以讓整個網站的訪問速度獲得80%左右的提升。
兩個80%都是經驗資料,但也八九不離十,具體最佳化效果好不好,需要根據實際情況看。因為道哥的網站沒有備案,不能放到國內,所以最佳選擇是在香港進行一次加速。國內提供香港加速的服務的不多,道哥用的是自己公司的免費產品,一方面不需要花錢,還同時解決了防駭客攻擊的問題,另一方面也是可以隨時體驗公司產品的好壞,出了問題時可以第一時間去追殺產品經理和研發。為避免廣告嫌疑,就不贅述了。
聰明的讀者可能已經想到了,我前面通過最佳化的手段把每篇文章給靜態化成了一個HTML檔案,也是可以放到CDN網路裡加速的,會讓你的網站速度像飛一樣。
查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/web/Skills/
因為道哥很懶,所以HTML頁面加速工作還沒有做。也是因為懶,這些最佳化我拖了好幾個月才去折騰,這也是因為網站完全不盈利的原因。
除了以上所說的工作之外,還可以根據需要考慮使用雲端儲存。Wordpress有一些外掛程式支援雲端儲存,這樣可以把佔用硬碟空間最大的圖片等內容儲存到雲端儲存上,而不佔用本地硬碟空間。一些雲端儲存還帶有CDN的功能。目前國內比較流行的雲端儲存有又拍雲、七牛、阿里雲的OSS等。
道哥的網站已經擴容過一次硬碟了,現在硬碟使用率又已經到了99%。不過還是因為懶,道哥目前還沒有去折騰雲端儲存的事情,等哪天網站因為硬碟使用100%掛了後再說。
其他邊邊角角的事情
反垃圾評論可以用Wordpress預設內建的Akismet外掛程式,這也是全球範圍內比較成功的一家反垃圾的公司。
反駭客入侵方面可以考慮使用雲Waf產品,代表性的是我所在的公司安全寶,幾家競爭者也可以考慮。因為Wordpress功能比較單一,主要出問題的地方還是在於外掛程式,用雲Waf完全夠用了。記得給自己的管理員帳號設定個強點的密碼,後台直接被駭客用大資料的方式找到管理員密碼而被黑掉的案例很多。
伺服器監控可以使用國內的創業公司「監控寶」,免費的服務已經完全夠用了。或者是DNSPod推出的「D監控」,同樣免費又好用。另外DNS解析一定要用DNSPod,服務品質是全球領先的。如果網站做大了還能用到它的很多進階功能。
=== 道哥的黑板報 ===
微博ID:aullik5
曆史文章存放在:http://taosay.net