國內典型的伺服器架構:
--------------------
***前端nginx/tengine(tengine.taobao.org)
***快取varnish
它是在nginx與apache之間的快取服務
當請求時,如果有快取則通過varnish直接返回資料,沒有時則轉給apache->tomcat->mysql再返回資料
***後端apache->tomcat->mysql
***memcached/redis用於減輕資料庫io的快取服務
***keep-alive:網路連線沒有斷開,但沒有資料傳輸的狀態叫keep-alive
***nginx的keep-alive:10,000個keep-alive連線只用2.5m的記憶體
***nginx特性
1)高併發連線
官方測試nginx能夠支撐5萬併發連線,實際測試可以達到3萬左右,按照這樣計算,每天可以處理上億次訪問量,採用最新epoll(linux2.6核心)和kqueue(freebsd)網路i/o模型,而apache則使用的是傳統的select模型
2)記憶體消耗小
nginx+php(fastcgi)伺服器在3萬併發連線下,開啟10個nginx程序消耗150mb記憶體(15mb*10),開啟64個php-cgi程序消耗128mb記憶體(20mb*64),使用webbench做壓力測試,在3萬併發量下速度依然很快。
tmpfs--用df -h檢視
***併發連線:apache3000左右,nginx30000左右,併發量nginx是apache的10倍左右。
原因是用的i/o方式不同,apache用的是select模型(阻塞io),nginx用的是epoll模型(多路復用io)
***切換主機:ssh 192.168.0.254
***200為第一回請求,302:為從快取返回的請求
tracker伺服器架構分析
初始化執行緒間訊號量和執行緒池 tracker service init work thread entrance 其主要處理 按接收通知訊息處理 recv notify read event set client sock read client sock read tracker deal ta...
Jetty 伺服器架構分析 下
說過了伺服器啟動,最後來看一下請求處理過程,伺服器啟動好後,處於待命狀態,請求來了,請求處理過程由分兩個建階段 前面有提到,從執行緒池中固定分配了乙個執行緒專門用於等待新連線,就是上圖的監聽執行緒,沒有請求來時,該執行緒是阻塞在 accept 方法上的,當新連線來建立連線時,accept 方法分配了...
Jetty 伺服器架構分析 下
說過了伺服器啟動,最後來看一下請求處理過程,伺服器啟動好後,處於待命狀態,請求來了,請求處理過程由分兩個建階段 前面有提到,從執行緒池中固定分配了乙個執行緒專門用於等待新連線,就是上圖的監聽執行緒,沒有請求來時,該執行緒是阻塞在 accept 方法上的,當新連線來建立連線時,accept 方法分配了...