解決大流量問題

對於當今大流量的網站,天天幾千萬甚至上億的流量,是如何解決訪問量問題的呢?

如下是一些總結的方法:  第一,確認服務器硬件是否足夠支持當前的流量。  普通的P4服務器通常最多能支持天天10萬獨立IP,若是訪問量比這個還要大,那麼必須首先配置一臺更高性能的專用服務器才能解決問題,不然怎麼優化都不可能完全解決性能問題。 php

第二,優化數據庫訪問。  服務器的負載過大,一個重要的緣由是CPU負荷過大,下降服務器CPU的負荷,纔可以有效打破瓶頸。而使用靜態頁面可使得CPU的負荷最小化。前臺實現徹底的靜態化 固然最好,能夠徹底不用訪問數據庫,不過對於頻繁更新的網站,靜態化每每不能知足某些功能。  緩存技術 就是另外一個解決方案,就是將動態數據存儲到緩存文件中,動態網頁直接調用這些文件,而沒必要再訪問數據庫,WordPress和Z-Blog都大量使用這種緩存技術 。我本身也寫過一個Z-Blog的計數器插件,也是基於這樣的原理。  若是確實沒法避免對數據庫的訪問,那麼能夠嘗試優化數據庫的查詢SQL.避免使用Select *from這樣的語句,每次查詢只返回本身須要的結果,避免短期內的大量SQL查詢。 前端

第三,禁止外部的盜鏈。  外部網站的圖片或者文件盜鏈每每會帶來大量的負載壓力,所以應該嚴格限制外部對於自身的圖片或者文件盜鏈,好在目前能夠簡單地經過refer來控制盜鏈,Apache本身就能夠經過配置來禁止盜鏈,IIS也有一些第三方的ISAPI能夠實現一樣的功能。固然,僞造refer也能夠經過代碼來實現盜 鏈,不過目前蓄意僞造refer盜鏈的還很少,能夠先不去考慮,或者使用非技術手段來解決,好比在圖片上增長水印。 mysql

第四,控制大文件的下載。  大文件的下載會佔用很大的流量,而且對於非SCSI硬盤來講,大量文件下載會消耗CPU,使得網站響應能力降低。所以,儘可能不要提供超過2M的大 文件下載,若是須要提供,建議將大文件放在另一臺服務器上。目前有很多免費的Web2.0網站提供圖片分享和文件分享功能,所以能夠儘可能將圖片和文件上 傳到這些分享網站。sql

  第五,使用不一樣主機分流主要流量  將文件放在不一樣的主機上,提供不一樣的鏡像供用戶下載。好比若是以爲RSS文件佔用流量大,那麼使用FeedBurner或者FeedSky等服務將RSS輸出放在其餘主機上,這樣別人訪問的流量壓力就大多集中在FeedBurner的主機上,RSS就不佔用太多資源了。 數據庫

第六,使用流量分析統計軟件。  在網站上安裝一個流量分析統計軟件,能夠即時知道哪些地方耗費了大量流量,哪些頁面須要再進行優化,所以,解決流量問題還須要進行精確的統計分析 才能夠。我推薦使用的流量分析統計軟件是GoogleAnalytics(Google分析)。我使用過程當中感受其效果很是不錯,稍後我將詳細介紹一下 GoogleAnalytics的一些使用常識和技巧。   1.分表 2.讀寫分離 3.前端優化。Nginx替換Apache(前端作負載均衡) 我的認爲主要仍是分佈式架構是否到位,mysql和緩存的優化都是有限度的優化,而分佈式架構作出來了,PV增加後,只須要堆機器就能擴容。緩存

另附一些優化經驗,首先學會用explain語句分析select語句,優化索引、表結構,其次,合理運用memcache等緩存,下降mysql的負載,最後,若是可能的話,儘可能用facebook的hiphop-php把PHP編譯了,提升程序效率。服務器

相關文章
相關標籤/搜索