閘道器服務:zuul與nginx的效能測試對比
案例一. Nginx單工作執行緒,單檔案路徑訪問測試
檔案內容僅6個數字:123456
測試命令:ab -c 100 -n 500000 127.0.0.1:80/html/test.html
可以看到每秒併發:32566 req
使用top命令,可以看到cpu使用情況: ab cpu:99% nginx cpu:99%
案例二. Nginx作為入口閘道器,將請求轉發至業務服務,這裡為了方便,直接使用nginx作為業務服務
第一級接入層閘道器nginx轉發配置,埠80:
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:8080/;
}
}轉發至第二級http業務服務8080,nginx配置如下,這裡簡單訪問本地檔案:
server {
listen 8080;
location /html/ {
alias /data/service/gw/html/;
expires 7d;
}
}
命令:ab -c 100 -n 500000 127.0.0.1:80/html/test.html
可以看到併發同樣可以達到34497req
而負載情況:
閘道器nginx,用了兩個工作執行緒,總cpu佔用率:95.7%+95.3%=191%
而本地檔案訪問nginx,僅一個工作執行緒,cpu佔用率:90%
案例三:將第一級閘道器替換成zuul,第二級仍然轉發至業務http nginx伺服器,業務請求簡單訪問本地檔案
由於此時zuul是多執行緒的架構,很依賴cpu資源大小,這裡先做第一組配置測試:8u cpu, 16GB 記憶體。
zuul的執行緒配置:最小min-space-threads:100,最大max-threads:200
使用命令: ab -c 200 -n 300000 127.0.0.1:8000/api/html/test.html
併發數大約在12860req/s
穩定之後整個系統的使用者空間加核心空間的總負載基本約77.7%=58.7%+19%
記憶體使用情況如下:
可以分析到此時系統很忙碌,基本是滿負荷在執行,瓶頸在cpu資源的競爭上。
案例四:將案例三的情況做第二組配置的測試:12u cpu, 24GB 記憶體。
ab -c 100 -n 500000 127.0.0.1:8000/api/html/test.html
併發資料果然有對應核數的比例提升:19113req/s
此時系統也處於比較高的負載:73.6=60.1+13.5,其中使用者空間同樣佔到大約60.1%的負載
而記憶體還是有很多富餘的,效能瓶頸同樣是在cpu資源的競爭上。
總結:
在cpu資源相對充足的情況下,zuul的效能也是不俗的,單個例項同樣可以達到1W+,cpu的佔用大概在500%。
這裡可能還可以用jvm等引數進行調優,也歡迎在此基礎之上效能調優做得更細緻的朋友前來指教,但總體效能指標相差不會太遠,而zuul是可以很方便的支援多個例項橫向擴充套件以及路由的負載均衡的,在分散式的架構演進上面作為閘道器層是一個比較不錯的選擇。
最後附上zuul的jmc效能監控圖:
執行緒情況
也可以從jmc的執行緒檢視中可以觀察到,有大量的tomcat的任務執行緒在競爭任務佇列的資源,並處於等待當中。
cpu佔用率最多的執行緒當然還是屬於網路io的連線執行緒,以及讀寫資料事件執行緒。
記憶體使用情況:
相關文章
- SpringCloud系列之API閘道器(Gateway)服務ZuulSpringGCCloudAPIGatewayZuul
- Spring Cloud實戰系列(五) - 服務閘道器ZuulSpringCloudZuul
- Spring Cloud Zuul API服務閘道器之請求路由SpringCloudZuulAPI路由
- Zuul路由閘道器Zuul路由
- SpringCloud微服務治理三(Zuul閘道器)SpringGCCloud微服務Zuul
- 微服務閘道器- Nginx微服務Nginx
- Spring Cloud入門教程(五):API服務閘道器(Zuul) 上SpringCloudAPIZuul
- Nginx 和 Gunicorn 效能對比測試Nginx
- Spring Cloud Zuul 閘道器SpringCloudZuul
- springboot-zuul閘道器Spring BootZuul
- 隨行付微服務之基於Zuul自研服務閘道器微服務Zuul
- 《springcloud 二》SrpingCloud Zuul 微服務閘道器搭建SpringGCCloudZuul微服務
- 服務閘道器 Zuul 與 Redis 結合實現 Token 許可權校驗ZuulRedis
- Spring Cloud Zuul與閘道器中介軟體SpringCloudZuul
- Spring Cloud Zuul 閘道器(一)SpringCloudZuul
- 微服務閘道器Zuul遷移到Spring Cloud Gateway微服務ZuulSpringCloudGateway
- 閘道器 zuul 與 spring-cloud gateway的區別ZuulSpringCloudGateway
- Spring Cloud教程 第九彈 微服務閘道器ZuulSpringCloud微服務Zuul
- Spring cloud(5)-路由閘道器(Zuul)SpringCloud路由Zuul
- SpringCloud之路由閘道器zuul(五)SpringGCCloud路由Zuul
- Spring Boot整合Zuul API閘道器Spring BootZuulAPI
- 跟我學SpringCloud | 第十篇:服務閘道器Zuul高階篇SpringGCCloudZuul
- 服務閘道器過濾器過濾器
- 【杭州活動】API 閘道器與高效能服務最佳實踐API
- springcloud服務閘道器-gatewaySpringGCCloudGateway
- java B2B2C電子商務平臺------服務閘道器zuulJavaZuul
- (六)spring cloud微服務分散式雲架構-服務閘道器Zuul高階篇SpringCloud微服務分散式架構Zuul
- (三)spring cloud微服務分散式雲架構-服務閘道器zuul初級篇SpringCloud微服務分散式架構Zuul
- idea建立springcloud專案圖文教程(zuul實現api閘道器服務)(十)IdeaSpringGCCloudZuulAPI
- 微服務(七)Gateway服務閘道器微服務Gateway
- .net core自定義高效能的Web API服務閘道器WebAPI
- sbc(六) Zuul GateWay 閘道器應用ZuulGateway
- 構建SpringCloud閘道器服務SpringGCCloud
- 服務網格Service Mesh、API閘道器和訊息佇列的對比 - Wolfram HempelAPI佇列
- 深入Java微服務之閘道器係列2:常見Java閘道器實現方案對比Java微服務
- spring cloud構建網際網路分散式微服務雲平臺-服務閘道器zuulSpringCloud分散式微服務Zuul
- API 閘道器 Apache APISIX 在 Amazon Graviton3 上的安裝與效能測試APIApache
- Spring Cloud 專題之四:Zuul閘道器SpringCloudZuul