PHP高併發基礎
如今互聯網時代web2.0的興起,使網站更多樣化,動態效果更加完美,用戶的訪問量額不段的增加,高流量-數據量大-對網站的要求也特別的高。訪問量上來了就會出現高併發問題,下
面就簡單介紹一下高併發得解決方案,
1:硬件方面
普通的一個p4的服務器每天最多能支持大約10萬左右的IP,如果訪問量超過10W那麼需要專用的服務器才能解決,如果硬件不給力 軟件怎麼優化都是於事無補的。主要影響服務器的速度
有:網絡-硬盤讀寫速度-內存大小-cpu處理速度。
2:軟件方面
第一個要說的就是數據庫,首先要有一個很好的架構,查詢儘量不用* 避免相關子查詢 給經常查詢的添加索引 用排序來取代非順序存取,如果條件允許 ,一般MySQL服務器最好安裝
在Linux操作系統中 。關於apache和nginx在高併發的情況下推薦使用nginx,ginx是Apache服務器不錯的替代品。nginx內存消耗少 官方測試能夠支撐5萬併發連接,在實際生產環境中跑
到2~3萬併發連接數。php方面不需要的模塊儘量關閉,使用memcached,Memcached 是一個高性能的分佈式內存對象緩存系統,不使用數據庫直接從內存當中調數據,這樣大大提升了速
度,iiS或Apache啓用GZIP壓縮優化網站,壓縮網站內容大大節省網站流量。
第二,禁止外部的盜鏈。
外部網站的圖片或者文件盜鏈往往會帶來大量的負載壓力,因此應該嚴格限制外部對
於自身的圖片或者文件盜鏈,好在目前可以簡單地通過refer來控制盜鏈,Apache自
己就可以通過配置來禁止盜鏈,IIS也有一些第三方的ISAPI可以實現同樣的功能。當
然,僞造refer也可以通過代碼來實現盜鏈,不過目前蓄意僞造refer盜鏈的還不多,
可以先不去考慮,或者使用非技術手段來解決,比如在圖片上增加水印。
第三,控制大文件的下載。
大文件的下載會佔用很大的流量,並且對於非SCSI硬盤來說,大量文件下載會消耗
CPU,使得網站響應能力下降。因此,儘量不要提供超過2M的大文件下載,如果需要
提供,建議將大文件放在另外一臺服務器上。
第四,使用不同主機分流主要流量
將文件放在不同的主機上,提供不同的鏡像供用戶下載。比如如果覺得RSS文件佔用
流量大,那麼使用FeedBurner或者FeedSky等服務將RSS輸出放在其他主機上,這
樣別人訪問的流量壓力就大多集中在FeedBurner的主機上,RSS就不佔用太多資源了
面就簡單介紹一下高併發得解決方案,
1:硬件方面
普通的一個p4的服務器每天最多能支持大約10萬左右的IP,如果訪問量超過10W那麼需要專用的服務器才能解決,如果硬件不給力 軟件怎麼優化都是於事無補的。主要影響服務器的速度
有:網絡-硬盤讀寫速度-內存大小-cpu處理速度。
2:軟件方面
第一個要說的就是數據庫,首先要有一個很好的架構,查詢儘量不用* 避免相關子查詢 給經常查詢的添加索引 用排序來取代非順序存取,如果條件允許 ,一般MySQL服務器最好安裝
在Linux操作系統中 。關於apache和nginx在高併發的情況下推薦使用nginx,ginx是Apache服務器不錯的替代品。nginx內存消耗少 官方測試能夠支撐5萬併發連接,在實際生產環境中跑
到2~3萬併發連接數。php方面不需要的模塊儘量關閉,使用memcached,Memcached 是一個高性能的分佈式內存對象緩存系統,不使用數據庫直接從內存當中調數據,這樣大大提升了速
度,iiS或Apache啓用GZIP壓縮優化網站,壓縮網站內容大大節省網站流量。
第二,禁止外部的盜鏈。
外部網站的圖片或者文件盜鏈往往會帶來大量的負載壓力,因此應該嚴格限制外部對
於自身的圖片或者文件盜鏈,好在目前可以簡單地通過refer來控制盜鏈,Apache自
己就可以通過配置來禁止盜鏈,IIS也有一些第三方的ISAPI可以實現同樣的功能。當
然,僞造refer也可以通過代碼來實現盜鏈,不過目前蓄意僞造refer盜鏈的還不多,
可以先不去考慮,或者使用非技術手段來解決,比如在圖片上增加水印。
第三,控制大文件的下載。
大文件的下載會佔用很大的流量,並且對於非SCSI硬盤來說,大量文件下載會消耗
CPU,使得網站響應能力下降。因此,儘量不要提供超過2M的大文件下載,如果需要
提供,建議將大文件放在另外一臺服務器上。
第四,使用不同主機分流主要流量
將文件放在不同的主機上,提供不同的鏡像供用戶下載。比如如果覺得RSS文件佔用
流量大,那麼使用FeedBurner或者FeedSky等服務將RSS輸出放在其他主機上,這
樣別人訪問的流量壓力就大多集中在FeedBurner的主機上,RSS就不佔用太多資源了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.