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就不佔用太多資源了
第五,使用不同主機分流主要流量
將檔案放在不同的主機上,提供不同的鏡像供使用者下載。例如如果覺得RSS檔案佔用流量大,那麼使用FeedBurner或FeedSky等服務將RSS輸出放在其他主機上,這樣別人存取的流量壓力就大多集中在FeedBurner的主機上,RSS就不佔用太多資源了。
第六,使用流量分析統計軟體。
在網站上安裝一個流量分析統計軟體,可以即時知道哪些地方耗費了大量流量,哪些頁面需要再進行優化,因此,解決流量問題還需要進行精確的統計分析才可以。例如:Google Analytics(Google分析)。
高並發和高負載的約束條件:硬體、部署、作業系統、Web 伺服器、PHP、MySQL、測試
部署:伺服器分離、資料庫叢集和庫表雜湊、鏡像、負載平衡
負載平衡分類: 1)、DNS輪循2)代理伺服器負載平衡3)位址轉換閘道負載平衡4)NAT負載平衡5)反向代理負載平衡6)混合型負載平衡
部署方案1:
適用範圍:靜態內容為主體的網站與應用系統;對系統安全要求較高的網站與應用系統。
Main Server:主伺服器
承載程式的主體運作壓力,處理網站或應用程式系統中的動態要求;
將靜態頁面推送至多個發佈伺服器;
將附件檔案推送至檔案伺服器;
安全需求較高,以靜態為主的網站,可將伺服器置於內網屏蔽外網的存取。
DB Server:資料庫伺服器
承載資料庫讀寫壓力;
只與主伺服器進行資料量交換,並屏蔽外網存取。
File/Video Server:檔案/視訊伺服器
承載系統中佔用系統資源和頻寬資源較大的資料流;
作為大附件的儲存和讀寫倉庫;
作為視訊伺服器將具備視訊自動處理能力。
發布伺服器群組:
只負責靜態頁面的發布,承載絕大多數的Web請求;
透過Nginx進行負載平衡部署。
部署方案2:
適用範圍:以動態互動內容為主體的網站或應用系統;負載壓力較大,且預算較充足的網站或應用系統;
Web伺服器群組:
Web服務無主從關係,屬平行冗餘設計;
透過前端負載平衡設備或Nginx反向代理實現負載平衡;
劃分專用檔案伺服器/視訊伺服器有效分離輕/重匯流排;
每台Web伺服器可透過DEC可實現連接所有資料庫,同時劃分主從。
資料庫伺服器群組:
相對均衡的承載資料庫讀寫壓力;
#透過資料庫實體檔案的對應實現多資料庫的資料同步。
共享磁碟/磁碟陣列
將用於資料物理檔案的統一讀取和寫入
#用於大型附件的儲存倉庫
透過自身實體磁碟的平衡和冗餘,確保整體系統的IO效率和資料安全;
方案特性:
#透過前端負載平衡,合理分配Web壓力;
透過檔案/視訊伺服器與常規Web伺服器的分離,合理分配輕重資料流;
透過資料庫伺服器群組,合理分配資料庫IO壓力;
每台Web伺服器通常只連接一台資料庫伺服器,透過DEC的心跳偵測,可在極短時間內自動切換至冗餘資料庫伺服器;
磁碟陣列的引進,大幅提升系統IO效率的同時,大幅增強了資料安全性。
Web伺服器:
Web伺服器很大一部分資源佔用來自於處理Web請求,通常情況下這也就是Apache產生的壓力,在高並發連線的情況下,Nginx是Apache伺服器不錯的替代品。 Nginx (“engine x”) 是俄羅斯人編寫的一款高效能的 HTTP 和反向代理伺服器。在國內,已經有新浪、搜狐通行證、網易新聞、網易部落格、金山逍遙網、金山愛詞霸、校內網、YUPOO相簿、豆瓣、迅雷看看等多家網站、 頻道使用 Nginx 伺服器。
Nginx的優勢:
高並發連接:官方測試能夠支撐5萬併發連接,在實際生產環境中跑到2~3萬並發連接數。
記憶體消耗少:在3萬並發連線下,開啟的10個Nginx 程序才消耗150M記憶體(15M*10=150M)。
內建的健康檢查功能:如果 Nginx Proxy 後端的某台 Web 伺服器宕機了,不會影響前端存取。
策略:相對於老牌的Apache,我們選擇Lighttpd和Nginx這些具有更小的資源佔用率和更高的負載能力的web伺服器。
Mysql:
MySQL本身就具備了很強的負載能力,MySQL最佳化是一項很複雜的工作,因為這最終需要對系統最佳化的很好理解。大家都知道資料庫工作就是大量的、 短時的查詢和讀寫,除了程式開發時需要注意建立索引、提高查詢效率等軟體開發技巧之外,從硬體設施的角度影響MySQL執行效率最主要來自於磁碟搜尋、磁碟IO水平、CPU週期、記憶體頻寬。
根據伺服器上的硬體和軟體條件進行MySQl最佳化。 MySQL最佳化的核心在於系統資源的分配,這不等於無限的給MySQL分配更多的資源。在MySQL設定檔中我們介紹幾個最值得關注的參數:
改變索引緩衝區長度(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 的中間程式碼。
memcache:memcache是由Danga Interactive開發的,高效能的,分散式的記憶體物件快取系統,用於在動態應用中減少資料庫負載,提升存取速度。主要機制是透過在內存裡維護一個統一的巨大的hash表,Memcache能夠用來存儲各種格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等
Xcache:國人開發的快取器,
策略: 為PHP安裝加速器。
代理伺服器(快取伺服器):
Squid Cache(簡稱為Squid)是一個流行的自由軟體(GNU通用公共授權)的代理伺服器和Web快取伺服器。 Squid有廣泛的用途,從作為網頁伺服器的前置cache伺服器快取相關請求來提高Web伺服器的速度,到為一組人共享網路資源而快取萬維網,網域名稱系統和其他網路搜索,到透過過濾流量幫助網絡安全,到區域網路通過代理網路。 Squid主要設計用於在Unix一類系統運作。
策略:安裝Squid 反向代理伺服器,能夠大幅提高伺服器效率。
壓力測試:壓力測試是一種基本的品質保證行為,它是每個重要軟體測試工作的一部分。壓力測試的基本想法很簡單:不是在常規條件下執行手動或自動測試,而是在電腦數量較少或系統資源匱乏的條件下執行測試。通常要進行壓力測試的資源包括內部記憶體、CPU 可用性、磁碟空間和網路頻寬等。一般用並發來做壓力測試。
壓力測試工具:webbench,ApacheBench等
漏洞測試:在我們的系統中漏洞主要包括:sql注入漏洞,xss跨站腳本攻擊等。安全性方面也包含系統軟體,如作業系統漏洞,mysql、apache等的漏洞,一般可以透過升級來解決。
漏洞測試工具:Acunetix Web Vulnerability Scanner
####
熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

禪工作室 13.0.1
強大的PHP整合開發環境

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)