第乙個要說的就是資料庫,首先要有乙個很好的架構,查詢盡量不用* 避免相關子查詢 給經常查詢的新增索引 用排序來取代非順序訪問,如果條件允許 ,一般mysql伺服器最好安裝在linux作業系統中 。關於apache和nginx在高併發的情況下推薦使用nginx,ginx是apache伺服器不錯的替代品。nginx記憶體消耗少 官方測試能夠支撐5萬併發連線,在實際生產環境中跑到2~3萬併發連線數。php方面不需要的模組盡量關閉,使用memcached,memcached 是乙個高效能的分布式記憶體物件快取系統,不使用資料庫直接從記憶體當中調資料,這樣大大提公升了速度,iis或apache啟用gzip壓縮優化**,壓縮**內容大大節省**流量。
第二,禁止外部的盜鏈。
於自身的或者檔案盜鏈,好在目前可以簡單地通過refer來控制盜鏈,apache自
己就可以通過配置來禁止盜鏈,iis也有一些第三方的isapi可以實現同樣的功能。當
然,偽造refer也可以通過**來實現盜鏈,不過目前蓄意偽造refer盜鏈的還不多,
可以先不去考慮,或者使用非技術手段來解決,比如在上增加水印。
提供,建議將大檔案放在另外一台伺服器上。
第四,使用不同主機分流主要流量
流量大,那麼使用feedburner或者feedsky等服務將rss輸出放在其他主機上,這
樣別人訪問的流量壓力就大多集中在feedburner的主機上,rss就不占用太多資源了
第五,使用不同主機分流主要流量
第六,使用流量分析統計軟體。
在**上安裝乙個流量分析統計軟體,可以即時知道哪些地方耗費了大量流量,哪些頁面需要再進行優化,因此,解決流量問題還需要進行精確的統計分析才可以。比如:google analytics(google分析)。
高併發和高負載的約束條件:硬體、部署、作業系統、web 伺服器、php、mysql、測試
部署:伺服器分離、資料庫集群和庫表雜湊、映象、負載均衡
負載均衡分類: 1)、dns輪循 2)**伺服器負載均衡 3)位址轉換閘道器負載均衡 4)nat負載均衡 5)反向**負載均衡 6)混合型負載均衡
部署方案1:
main server:主伺服器
承載程式的主體執行壓力,處理**或應用系統中的動態請求;
將靜態頁面推送至多個發布伺服器;
將附件檔案推送至檔案伺服器;
安全要求較高,以靜態為主的**,可將伺服器置於內網遮蔽外網的訪問。
db server:資料庫伺服器
承載資料庫讀寫壓力;
只與主伺服器進行資料量交換,遮蔽外網訪問。
承載系統中占用系統資源和頻寬資源較大的資料流;
作為大附件的儲存和讀寫倉庫;
發布伺服器組:
只負責靜態頁面的發布,承載絕大多數的web請求;
通過nginx進行負載均衡部署。
部署方案2:
web伺服器組:
web服務無主從關係,屬平行冗餘設計;
通過前端負載均衡裝置或nginx反向**實現負載均衡;
每台web伺服器可通過dec可實現連線所有資料庫,同時劃分主從。
資料庫伺服器組:
相對均衡的承載資料庫讀寫壓力;
通過資料庫物理檔案的對映實現多資料庫的資料同步。
共享磁碟/磁碟陣列
將用於資料物理檔案的統一讀寫
用於大型附件的儲存倉庫
通過自身物理磁碟的均衡和冗餘,確保整體系統的io效率和資料安全;
方案特性:
通過前端負載均衡,合理分配web壓力;
通過資料庫伺服器組,合理分配資料庫io壓力;
每台web伺服器通常只連線一台資料庫伺服器,通過dec的心跳檢測,可在極短時間內自動切換至冗餘資料庫伺服器;
磁碟陣列的引入,大幅提公升系統io效率的同時,極大增強了資料安全性。
web伺服器:
nginx的優勢:
高併發連線:官方測試能夠支撐5萬併發連線,在實際生產環境中跑到2~3萬併發連線數。
記憶體消耗少:在3萬併發連線下,開啟的10個nginx 程序才消耗150m記憶體(15m*10=150m)。
內建的健康檢查功能:如果 nginx proxy 後端的某台 web 伺服器宕機了,不會影響前端訪問。
策略:相對於老牌的apache,我們選擇lighttpd和nginx這些具有更小的資源佔用率和更高的負載能力的web伺服器。
mysql:
mysql本身具備了很強的負載能力,mysql優化是一項很複雜的工作,因為這最終需要對系統優化的很好理解。大家都知道資料庫工作就是大量的、 短時的查詢和讀寫,除了程式開發時需要注意建立索引、提高查詢效率等軟體開發技巧之外,從硬體設施的角度影響mysql執行效率最主要來自於磁碟搜尋、磁碟io水平、cpu週期、記憶體頻寬。
改變索引緩衝區長度(key_buffer)
改變表長(read_buffer_size)
設定開啟表的數目的最大值(table_cache)
對緩長查詢設定乙個時間限制(long_query_time)
如果條件允許 ,一般mysql伺服器最好安裝在linux作業系統中,而不是安裝在freebsd中。
策略: mysql優化需要根據業務系統的資料庫讀寫特性和伺服器硬體配置,制定不同的優化方案,並且可以根據需要部署mysql的主從結構。
php:
1、載入盡可能少的模組;
2、如果是在windows平台下,盡可能使用iis或者nginx來替代我們平常用的apache;
3、安裝加速器(都是通過快取php**預編譯的結果和資料庫結果來提高php**的執行速度)
eaccelerator,eaccelerator是乙個自由開放原始碼php加速器,優化和動態內容快取,提高了效能php指令碼的快取效能,使得php指令碼在編譯的狀態下,對伺服器的開銷幾乎完全消除。
apc:alternative php cache(apc)是 php 的乙個免費公開的優化**快取。它用來提供免費,公開並且強健的架構來快取和優化 php 的中間**。
xcache:國人開發的快取器,
策略: 為php安裝加速器。
**伺服器(快取伺服器):
squid cache(簡稱為squid)是乙個流行的自由軟體(gnu通用公共許可證)的**伺服器和web快取伺服器。squid有廣泛的用途,從作為網頁伺服器的前置cache伺服器快取相關請求來提高web伺服器的速度,到為一組人共享網路資源而快取全球資訊網,網域名稱系統和其他網路搜尋,到通過過濾流量幫助網路安全,到區域網通過**網。squid主要設計用於在unix一類系統執行。
策略:安裝squid 反向**伺服器,能夠大幅度提高伺服器效率。
壓力測試:壓力測試是一種基本的質量保證行為,它是每個重要軟體測試工作的一部分。壓力測試的基本思路很簡單:不是在常規條件下執行手動或自動測試,而是在計算機數量較少或系統資源匱乏的條件下執行測試。通常要進行壓力測試的資源包括內部記憶體、cpu 可用性、磁碟空間和網路頻寬等。一般用併發來做壓力測試。
壓力測試工具:webbench,apachebench等
漏洞測試:在我們的系統中漏洞主要包括:sql注入漏洞,xss跨站指令碼攻擊等。安全方面還包括系統軟體,如作業系統漏洞,mysql、apache等的漏洞,一般可以通過公升級來解決。
漏洞測試工具:acunetix web vulnerability scanner
no related content found.
PHP高併發和大流量解決方案整理
一 高併發的概念 在網際網路時代,併發,高併發通常是指併發訪問。也就是在某個時間點,有多少個訪問同時到來。二 高併發架構相關概念 1 qps 每秒查詢率 每秒鐘請求或者查詢的數量,在網際網路領域,指每秒響應請求數 指http請求 2 pv page view 綜合瀏覽量,即頁面瀏覽量或者點選量,乙個...
高併發解決方案 9 大流量解決方案
常用的nginx。位於網路7層之上的http層,針對http應用做一些分流的策略。nginx單台機器可以承受2w到3w的併發量。任何一台伺服器都有乙個極限,一旦訪問量到了這個點,效能會急劇惡化。最大併發5w,實際上可能3 4w就會引發效能惡化,然後拖著到極限,最後宕機。隨著併發流量的增加,反向 已經...
php 面試考點總結 高併發和大流量解決方案考點
盜鏈概念 盜鏈是指在自己的頁面上展示一些並不在自己伺服器的內容 防盜煉工作原理 通過referer或者簽名,可以檢測目標網頁訪問的 頁,一旦檢測到 頁不是本站即進行阻止或者返回指定頁面 解決方案1 referer nginx 模組ngx http referer module用於阻擋 非法的網域名稱...