一,大型網站的特點: 1,并發數量高,通路量大。 2,處理的資料大(上1勢必造成如下) 3,使用者分布廣泛,網絡環境複雜。 4,穩定性高。 5,易于擴充。 6,安全性高。 二,大型網站的基礎設施 1,伺服器介紹 1.1,塔式伺服器 :外形與普通pc機差不多,個頭相對大一點。特點,插槽多,擴充性強,常用于入門級和工作組級别的伺服器,不過相對占空間。 1.2,機架式伺服器:寬度為19英寸,高度以U為機關(1U=1.75英寸=44.45毫米) 這種伺服器占用空間小,可以将多台伺服器裝到1個機櫃上,友善統一管理,但由于内間的限制,擴充性較受到限制。通常有1U、2U、3U、4U、5U、7U幾種标準服務。這種伺服器多用于伺服器數量較多的大型企業使用,也有不少企業采用這種類型的伺服器,但将伺服器傳遞給專門的伺服器托管機構來托管,尤其是目前很多網站的伺服器都采用這種方式。 DELL R730 2U DELL R710 2U 1.3,刀片式伺服器:主要結構為一大型主體機箱,内部可插上許多“刀片”,其中每一塊刀片實際上就是一塊系統主機闆,類似于一個個獨立的伺服器,它們可以通過本地硬碟啟動自己的作業系統。每一塊刀片可以運作自己的系統,服務于指定的不同使用者群,互相之間沒有關聯。而且,也可以用系統軟體将這些主機闆集合成一個伺服器叢集。在叢集模式下,所有的刀片可以連接配接起來提供高速的網絡環境,共享資源,為相同的使用者群服務。在叢集中插入新的刀片,就可以提高整體性能。而由于每塊刀片都是熱插拔的,是以,系統可以輕松地進行替換,并且将維護時間減少到最小,比機器式伺服器更節省空間,散熱也比機架式的相對好點,不過相對貴點。 2,虛拟主機、vps主機、雲主機。 2.1,虛拟主機:虛拟主機是共享主機的一種形式,共享主機其實就是一台伺服器上有許多網站,大家都共享這台伺服器的硬體和帶寬,如果它發生故障,所有的網站都會無法通路。 2.2,vps主機:将一台伺服器分割成多個虛拟專享伺服器(vps),每個vps都可以配置設定單獨的公網Ip,獨立的作業系統個、獨立的操作空間、獨立的cpu資源等。相對虛拟主機,可操作的自由度很強,有點和windows下的虛拟機很相似。 2.3,雲主機:它共享的不再局限于某台伺服器,而是雲裡面的所有伺服器,主要特點就是穩定,如果出現某台伺服器後某條線路出現問題,系統會自動把你的網站和IP位址配置設定到其他伺服器上去,絕不會讓你的網站出現無法通路的情況。 3,網絡、安全裝置(交換機、路由器、防火牆) 4,網絡存儲技術 4.1,DAS(直接附加存儲,Direct Access Storage)直接附加存儲是指将儲存設備通過SCSI接口或者光纖通道直接連接配接到一台伺服器上使用,購置成本較低,配置簡單,使用過程和使用本機硬碟無太大差別。 4.2, NAS (網絡附加存儲,Network Attached Storage,依賴其自身的作業系統) NAS實際上帶有瘦伺服器的儲存設備,其實你可以把它了解為就是網絡檔案伺服器。NAS裝置直接連接配接到TCP/IP網絡上,網絡伺服器通過TCP/IP網絡存取管理資料。NAS作為一種瘦伺服器系統,易于安裝和部署,管理使用也很友善。同時由于可以允許客戶機不通過伺服器直接在NAS中存取資料,是以對伺服器來說可以減少系統開銷。常見的品牌群晖 威聯通等。 支援nfs samba 和http通路,但是如果其自身作業系統挂掉,那麼就不可用。 4.3, SAN(存儲區域網Storage Area Network,沒有自己的作業系統,通過網路和光纖連接配接它) 獨立于TCP/IP網絡之外且就是為存儲而建立的專門性網絡就是SAN。由于使用高端的RAID陣列技術,是以它甚至能達到2-4GB/S的恐怖傳輸速率。 不過這個成本相對比較高,因為它需要光釺通道和SAN陣列櫃,小型企業一般不會使用這種。 5、IDC機房 機房、機櫃、網絡(交換機、路由器)、電源(UPS、發電機) 三,基礎概念 1,http協定:超文本傳輸協定,預設端口号80,如果是是https的話,預設端口号是443。那麼https是對使用者的請求是經加密的,換句話說,如果有人将我們的請求資料劫貨了,他也沒法在我們的請求中找到有用資訊。 htpp主流版本分為1.1 1.0 二者之間的最大差別在于1.1是支援長久連接配接的(幾秒内打開頁面上兩個連結,與伺服器上保持連接配接,)、支援host請求頭字段,預設情況下我們使用浏覽器通路網站使用的http協定都是1.1,我們也可以選擇1.0. 2.使用者通路網站的過程: 使用者輸入浏覽器的網址——>本機DNS伺服器解析域名為IP——>web浏覽器把請求發送給遠端伺服器,——>用戶端伺服器建立TCP連接配接——>傳輸資料——>關閉連接配接 3,請求方法,也就是我們去通路網站,具體的操作是什麼。常見的有GET POST HEAD PUT DELETE 3.1 GET:向特定的資源送出請求,打開一個網頁 3.2 POST:向指定的資源送出資料(比如表單、檔案),比如說輸入使用者名和密碼,登入網站 3.3 PUT:向指定的資源的位置上傳内容,上傳一個檔案,論壇更新圖檔,首先删除,就是delete 3.4 DELETE:删除某一個資源的,類似于資料庫的delete的操作,論壇發帖,上傳圖檔就是put 3.5 HEAD 不需要擷取内容,隻需要header,下面就是head例子,擷取一些資訊 [root@ZAMP ~]# curl -I www.baidu.com HTTP/1.1 200 OK Date: Wed, 24 Aug 2016 06:15:23 GMT Content-Type: text/html; charset=utf-8 Connection: Keep-Alive Vary: Accept-Encoding ………… Expires: Wed, 24 Aug 2016 06:14:57 GMT X-Powered-By: HPHP Server: BWS/1.1 X-UA-Compatible: IE=Edge,chrome=1 3.6 MOVE 就是網頁301跳轉 [root@ZAMP ~]# curl -I www.aminglinux.com HTTP/1.1 301 Moved Permanently Server: nginx Date: Wed, 24 Aug 2016 06:21:00 GMT Content-Type: text/html Content-Length: 178 Connection: keep-alive Location: http://www.apelearn.com/ 3.6 referer 是目前頁從哪裡連結過來的位址,user-Agent說明通路浏覽器。參考http head詳解. 4,常見的狀态碼 200 301 302 304 401 403 404 500 502 503 504 200,ok 301,永久重定向 302,臨時重定向 304,未修改文檔,浏覽器本地緩存的檔案 401,使用者認證(使用者名和密碼輸入不對,401狀态碼) 404,未找到資源 403,禁止通路 500,内部錯誤(程式問題,代碼問題) 502,請求未完成,一般是nginx找不到php,或者php資源耗盡 503,請求未完成,伺服器臨時過載或當機。一般是做代理時,後端伺服器出現問題,這種狀态傳回503 504,網關逾時,一般資料庫出現問題常會顯示這個代碼,查詢資料表很慢,不能及時回報給php,php不能及時回報給nginx 5,網站元素的解說 JS CSS PNG Jpeg rar ... CSS控制網站的布局 JS一些腳本加載插件 HTML網站基本布局 [root@ZAMP~]# cat /opt/nginx/etc/nginx/mime.types types { text/html html htm shtml; text/css css; text/xml xml; p_w_picpath/gif gif; p_w_picpath/jpeg jpeg jpg; application/javascript js; application/atom+xml atom; application/rss+xml rss; 6,URL、URI URL,一種網址,http://www.apelearn.com/bbs/ 統一資源定位符 ,URI,統一資源辨別符。其實URI是包括的URL的,URL一般是以http開頭的,通過這個打開個頁面,而有的uri你在位址欄輸入的時候根本沒法通路。 首先,URI,data/cache/style_2_common.css?enI和 data/cache/style_2_forum_viewthread.css?enI都是URI, URI是uniform resource identifier,統一資源辨別符,用來唯一的辨別一個資源。而URL是uniform resource locator,統一資源定位器,它是一種具體的URI,即URL可以用來辨別一個資源,而且還指明了如何locate這個資源。而URN,uniform resource name,統一資源命名,是通過名字來辨別資源,比如mailto:[email protected]。也就是說,URI是以一種抽象的,高層次概念定義統一資源辨別,而URL和URN則是具體的資源辨別的方式。URL和URN都是一種URI。 以下這兩種也是URI,但不是URL,不帶http samba提供的//192.168.101.1/abc/123 ftp提供的file://www.demo.com/abc 7,靜态網頁、動态網頁、僞靜态。 靜态網頁就是一個簡單的html網頁 動态網頁:可以把資料庫的資料提取出來,有和後天資料庫的互動過程 僞靜态:兩個網址不同,内容卻是一樣的。因為配置了僞靜态規則,rewrite規則。好處是可以讓搜尋引擎更喜歡你的網站。 7.1 靜态網頁,一般是以.html、.htm結尾的網頁。 7.2 動态網頁,一般字尾名.asp .php .jsp .cgi的網頁,并且在動态網頁網址中有一個标志性的符号——“?”,最主要的是他要是要背景資料庫進行互動的。 7.3 僞靜态, 顧名思義,他其實是動态的網頁,通過rewire的功能,表現出來的是1個靜态網頁,這樣有利于網站的排名。 8,常見的web伺服器軟體 apache nginx(tengine) iis(微軟的産品,) tomcat 9,量級術語 9.1 ip uv pv ip 百度或者http://www.ip138.com檢視出口公網IP,辦公室100個人通路同一個網站,實際上隻是一個公網IP通路 uv user view 指的是網站有多少人來通路,或者說是有多少台電腦來通路,人的概念,那就是100uv pv page view 指的是通路這個網站的頁面有多少,包括重新整理,每個pv是指通路每個頁面 DAU daily active user日活躍使用者數 MAU monthly active user月活躍使用者數 pv/uv>20說明網站很受歡迎,一個人在該網站通路20多個頁面 9.2 并發連接配接數 吞吐量(衡量網站性能的重要名額) 舉個列子,銀行5個視窗,來了20人辦理業務 并發連接配接數,同一時間内有多少個人來通路這個網站,并發數20 吞吐量:在某一個時刻,我們伺服器能處理的請求數,吞吐量5 9.3,如何評估網站最大并非連接配接數? 9.3.1如何統計網站通路量? 接入第三方統計平台(CNZZ、51LA(www.51.la)、百度統計) 通過分析通路日志做統計awstat 9.3.2 :專業工具loadrunner 9.3.3:壓力測試工具 ab ,可以設定并發數和通路量,獲得網站的吞吐量 yum instll -y httpd 預設帶有ab指令,需要具體到某個檔案 ab -c 100 -n 1000 www.qq.com/index.php -c 表示并發數,同時多少人去通路 -n 表示請求數,同時請求的連接配接,例如請求的頁面 重要的名額; Failed requests: 0 失敗0,沒有失敗請求 Requests per second: 每秒鐘處理多少個請求,吞吐量 Time per request: 處理每個請求數花費的時間,打開網站反應的時間 [root@132 ~]# ab -c 100 -n 1000 http://www.qq.com/index.php This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking www.qq.com (be patient) Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Completed 1000 requests Finished 1000 requests Server Software: squid/3.4.3 Server Hostname: www.qq.com Server Port: 80 Document Path: /index.php Document Length: 1131 bytes Concurrency Level: 100 Time taken for tests: 4.040 seconds Complete requests: 1000 Failed requests: 0 失敗0,沒有失敗請求 Write errors: 0 Non-2xx responses: 1001 Total transferred: 1366365 bytes HTML transferred: 1132131 bytes Requests per second:吞吐量)247.53 [#/sec] (mean) 吞吐量每秒鐘處理請求達到247個,100并發完全可以處理 Time per request: 403.995 [ms] (mean)處理每個請求數花費的時間,打開網站反應的時間 Time per request: 4.040 [ms] (mean, across all concurrent requests) Transfer rate: 330.29 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 35 38 4.0 37 56 Processing: 35 43 100.0 39 3201 Waiting: 33 42 99.7 38 3191 Total: 70 81 100.2 76 3239 Percentage of the requests served within a certain time (ms) 50% 76 66% 78 75% 79 80% 79 90% 82 95% 96 98% 102 99% 104 100% 3239 (longest request) 9.3.4 伺服器配置預估 8核至強E5,8g記憶體 純php跑300已經很優秀了,150左右響應時間已明顯變慢 我們通常說的并發并不單單是動态并發,要包括靜态 discuz一個頁面裡面的靜态内容占據90%以上 不同的網站類型動靜态所占的比例也不同 我們可以大緻上以2:8原則作為一個評估标準,一個網站的請求裡面80%是靜态,20%是動态 nginx支援最高靜态并發可達3w 若動态150,那靜态為600,整體上為750 根據2:8原則,網站80%的pv在20%的時間内完成,24*0.2*3600*150/0.8=340w 搜尋引擎以及其他非人為通路也可以占到30%-50% |