ps:尊重原創 摘自:
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盜鏈的還不多,
可以先不去考慮,或者使用非技術手段來解決,比如在上增加水印。
第四,使用不同主機分流主要流量
第六,使用流量分析統計軟體。
在**上安裝乙個流量分析統計軟體,可以即時知道哪些地方耗費了大量流量,哪些頁面需要再進行優化,因此,解決流量問題還需要進行精確的統計分析才可以。比如: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.
Nginx負載均衡與高可用的實現
當生產環境裡有很大的流量產生時,通常需要用負載均衡技術來做優化,並確保容錯配置。nginx不光可以實現web server,還可以作為http負載均衡來分發流量給後端的應用程式伺服器,以此來提高效能。nginx的負載均衡功能依賴於ngx http upstream module模組,所支援的 方式有...
負載均衡(SLB) 高可用
負載均衡 slb 高可用是從系統設計 產品配置等多個方面提供了可用性保障。此外,您可以根據業務需求,配合使用雲解析dns等產品實現跨地域容災。負載均衡例項採用集群部署,可實現會話同步,以消除伺服器單點故障,提公升冗餘,保證服務的穩定性。其中四層負載均衡通過lvs linux virtual serv...
高可用 負載均衡 方案
高可用 keepalived heartbeat 負載 lvs haproxy web應用的負載均衡 集群 高可用 ha 解決方案 構建高效能web站點 筆記 基礎架構篇 高可用可伸縮架構實用經驗談 amoeba是乙個以mysql為底層資料儲存,並對應用提供mysql協議介面的proxy。它集中地響...