超越分析國內典型的伺服器架構

2021-07-12 02:20:56 字數 922 閱讀 9076

國內典型的伺服器架構:

--------------------

***前端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 方法分配了...