書名:構建高性能Web站點linux
出版社: 電子工業出版社apache
ISBN:9787121170935瀏覽器
一 緒論緩存
等待的時間:服務器
(1) 數據在網絡上的傳輸時間網絡
(2) 站點服務器處理請求並生成迴應數據的時間多線程
(3) 瀏覽器本地計算和渲染的時間併發
二 數據的網絡傳輸負載均衡
數據如何發送異步
(1) 應用程序經過系統函數庫接口(如send)向內核發出系統調用
(2) 系統內核將數據從用戶態內存區複製到由內核維護的內核緩衝區(這塊地址空間的大小有限,須要發送的數據以隊列的形式進入)
(3) 內核通知網卡來取數據,網卡將數據複製到網卡緩衝區
(4) 網卡緩衝區的數據完成從字節到位的轉換,網卡經過特定的物理裝置產生不一樣的電信號(銅線)或是光信號(光纖)
三 服務器併發處理能力
1 吞吐率
單位時間內服務器處理請求數 單位:reqs/s
2 apache ab 壓力測試
3 系統調用的減小對於下降請求處理時間有着不可忽視的做用
4 內存分配
Apache使用了基於內存池策略的內存管理方案,在運行開始便一次性申請大片內存做爲內存池,隨後須要的時候在內存池中直接獲取,不須要再次分配
Nginx使用多線程來處理請求,這使得多個線程之間能夠共享內存資源,從而是內存整體使用量大大減小
5 持久鏈接
在一次TCP鏈接中持續發送多份數據而不斷開鏈接,與其相反的是短鏈接,也就是創建鏈接後發送一份數據便斷開,而後再次創建鏈接發送下一份數據。創建TCP鏈接的操做開銷較大,因此鏈接次數越少,越有利於性能的提高。主流Web服務器都支持長鏈接,Apache中默認長鏈接是打開的,配置文件httpd.conf中 KeepAliveTimeout 5。瀏覽器和服務器各自超時時間不一樣,以最短期爲準。
6 I/O模型
I/O模型分爲不少種類型,好比內存I/O,網絡I/O,磁盤I/O,這裏講的是網絡I/O。
同步阻塞I/O:默認狀況下socket都是阻塞的,進程調用某些涉及I/O操做的函數時,如:connect、accept、recv/recvfrom、send/sendto、closesocket,I/O操做完成後再繼續運行
同步非阻塞I/O:在socket選項中設置O_NONBLOCK能夠實現非阻塞I/O,非阻塞I/O經過反覆輪詢來嘗試數據是否就緒,防止進程被阻塞,最大的好處是能夠在一個進程中同時處理多個I/O事件
多路I/O就緒通知:能夠同時處理多個connection,容許進程經過同一種方法同時監視全部文件描述符,並能夠快速得到全部就緒的文件描述符。當數據就緒後,通常選擇非阻塞方式。好比select和linux下的epoll
異步I/O:主動請求數據後即可以繼續處理其餘任務,隨後等待I/O操做完畢的通知
四 動態內容緩存
緩存的目的就是把須要話費昂貴開銷的計算結果保存起來,這裏指動態內容自行實現緩存機制。
緩存和緩衝類似之處是都須要一塊存儲區,他們本質都於速度不一致有關,但緩存更加註重策略,也就是說緩存命中率。
分析研究Smarty緩存。
過時檢查
局部無緩存
六 瀏覽器緩存
Firefox 地址欄輸入about:cache查看緩存,採用二進制文件的方式來存儲和管理緩存文件
緩存協商:瀏覽器向Web服務器請求內容,服務器告訴瀏覽器哪些能夠緩存。下次請求這個內容時,詢問服務器是否可使用本地的緩存,服務器收到瀏覽器詢問後須要作出果斷迴應,究竟是容許瀏覽器使用本地緩存仍是將最新內容傳回瀏覽器
七 Web服務器緩存
涉及Apache的緩存技術,Apache提供兩個擴展,分別是mod_disk_cache和mod_mem_cache,推薦用前者。
八 反向代理緩存
正向代理:客戶端隱藏在代理服務器以後,代理端代理的是客戶端。
反向代理:Web服務器隱藏在代理服務器以後,客戶端經過反向代理服務器來間接訪問Web服務器。服務端知道客戶端,客戶端不知道服務端,經過代理端鏈接服務端。代理端代理的是服務端。向代理的一個目的是基於緩存的加速。
用Nginx做爲反向代理服務器,只須要設置proxy_pass指令便可,同時別忘打開mod_proxy模塊
十二 Web負載均衡
HTTP重定向:當HTTP代理向Web服務器請求某個URL後,Web服務器能夠經過HTTP響應頭信息中的Location標記來飯後一個新的URL,這意味着HTTP大力須要繼續請求這個新的URL,這便完成了自動跳轉。HTTP重定向具有了請求轉移和自動跳轉的本領,因此能夠用來實現負載均衡。
DNS負載均衡:DNS服務器能夠完成域名到IP地址的一對多的映射,經過這點來實現負載均衡
反向代理負載均衡:核心是轉發HTTP請求
IP負載均衡:在HTTP層面一下實現負載均衡,這些負載均衡調度器的工做必須由Linux內核來完成,好比位於內核的Netfilter和IPVS調度器
直接路由:在鏈路層工做,經過修改數據包的目的MAC地址,將數據包發到實際服務器上,實際服務器的響應數據包井直接發送給用戶端,而不通過調度器
IP隧道
十八 性能監控
實時監控:Nmon+Nmon Analser
監控代理:SNMP
系統監控:Cacti
本書完整版點擊下載