Powered by .NET Core 進展:驗證高併發效能問題嫌疑犯 docker swarm

部落格園團隊 發表於 2019-08-11

相關博文:

抱歉,.NET Core 版部落格系統(部落格後臺除外)的釋出給大家帶來麻煩了,我們正在一邊忙著修各種 bug ,一邊排查訪問高峰高併發效能問題。

對於釋出後遇到的高併發效能問題,我們一點都沒去懷疑 .net core ,我們懷疑的是 docker swarm ,懷疑在高併發下 docker swarm 網路效能急劇下降,而且極不穩定。

對比新舊版部落格系統所消耗的伺服器資源,差距之大讓人乍舌。同樣的併發,之前基於 .net framework 的舊版部落格系統用 6臺4核8G 的阿里雲 windows 伺服器就能撐住,而現在基於 docker swarm +  .net core 的新版部落格系統用 6臺8核16G 的阿里雲 centos 伺服器都撐不住。

為了驗證我們對罪魁禍首 docker swarm 的懷疑,我們今天已經將 .net core 版部落格系統改用 docker-compose 部署:

version: '3.7'
services:
  web:
    image: blog-web
    restart: always
    deploy:
      replicas: 1
      resources:
        limits:
          cpus: '4'
          memory: 7G
        reservations:
          memory: 500M
    ports:
      - 80:80
    working_dir: /app
    environment: 
      - TZ=Asia/Shanghai
      - COMPlus_GCHeapHardLimit=1C0000000    
    command: bash -c 'sh run.sh'
docker-compose --compatibility up -d 

現在已經發布上線,如果真的是 docker swarm 的問題,明天上午的訪問高峰將驗證出結果。

目前用了3臺4核8G的伺服器,明天根據負載情況再增加伺服器。

【更新】

8:40 左右,響應速度變慢,加了1臺伺服器,響應速度立馬恢復。(之前使用 .net framework + windows 也是在這個時間點加伺服器)

9:00 左右,又加了1臺伺服器,現在是5臺4核8G的伺服器。

9:35 左右,又加了1臺伺服器,現在是6臺4核8G的伺服器。

10:00 左右,又加了1臺伺服器,現在是7臺4核8G的伺服器。

13:10 左右,退回到 .net framework + windows 部落格系統,.net core 部落格系統待調整部署與修復 bug 後再上線。

上午使用 docker-compose 部署時,部落格系統所依賴的後端服務部署在另外一個 docker swarm 叢集上,結果這個叢集的路由轉發出現了問題。使用 docker-compose 部署還需要將部落格系統所依賴的服務進行 docker-compose 部署。

從上午的訪問高峰的情況看,docker-compose 部署時的資源瓶頸在 CPU ,出現響應速度慢時加伺服器就能解決(這是正常情況),沒有出現使用 docker swarm 部署時那種響應速度極不穩定、加伺服器也無補的情況。

docker-compose 部署是否能夠在訪問高峰長時間持續穩定執行以及需要多少臺伺服器?待進一步驗證。


相關文章

Docker 常用命令 Docker

Docker 常用命令

學習完整課程請移步 網際網路 Java 全棧工程師檢視 Docker 版本docker version從 Docker 檔案構建 Docker 映像docker build -t image-name
docker 安裝 Docker

docker 安裝

安裝 Dockeryum -y install docker啟動 Docker 後臺服務service docker start安裝mongodbdocker pull mongodocker ru
嘗試使用 docker 部署 Laravel 專案 Docker|Laravel

嘗試使用 docker 部署 Laravel 專案

環境: ubnutu18.04 虛擬機器上通過docker部署,首先需要安裝好docker環境安裝dockerdocker 映象要求基於Alpine Linux的容器。Nginx Web伺服器。PHP
Elasticsearch 在 docker 和 CentOS 下的安裝教程 Docker|ElasticSearch|CentOS

Elasticsearch 在 docker 和 CentOS 下的安裝教程

前言新版本的Elasticsearch不能以root使用者來執行。因此,MAC下建議使用Docker來安裝。國內各版本映象:點選這Centos7.4 64位第一步 下載.tar.gz的安裝包不要在r
CentOS7 安裝 docker Docker|CentOS

CentOS7 安裝 docker

安裝命令 1、更新update到最新的版本yum update 2、解除安裝老版本dockeryum remove docker docker-common docker-selinux do
docker 安裝 Redis 主從容器 Redis|Docker

docker 安裝 Redis 主從容器

建立Dockerfile 檔案FROM centos:latestRUN groupadd -r redis && useradd -r -g redis redisRUN yum
docker 入門到實戰 1.初識 docker Docker

docker 入門到實戰 1.初識 docker

什麼是docker你到市場上買了一堆菜和肉:鹹魚,雞蛋,青菜,蘿蔔,熟食,水果等。這些菜都要裝在一個冰箱裡,不同的菜保質期不一樣,味道也不一樣,如果你將鹹魚和水果放在一起,水果就成了黑暗料理了。如果將
Docker容器系列文章|這20個Docker Command,有幾個是你會的? Docker

Docker容器系列文章|這20個Docker Command,有幾個是你會的?

在這之前呢,也寫過兩篇關於Docker基礎入門類的文章Docker容器技術入門(一)Docker容器技術入門(二)很多人都感覺這文章這麼簡單、這麼基礎,可是別忘記了“萬丈高樓平地起”,如果少了這個平地
Docker Swarm 叢集搭建實踐 Docker

Docker Swarm 叢集搭建實踐

說明Docker Swarm 是 Docker 的一個原生的叢集管理工具,可以把多個Docker主機(節點)組織成一個叢集,使得容器可以組成跨主機的子網網路,此外,Docker Swarm 還內建了部
docker刪除所有容器和映象命令 Docker

docker刪除所有容器和映象命令

刪除容器需要先停止後remove:# docker stop $(docker ps -a -q)a679aa25d419d6f061600581a1fc78352ff1fdb3718b8ad1348
如何在 Linux/Windows/MacOS 上使用 .NET 進行開發 Linux|.Net|macOS

如何在 Linux/Windows/MacOS 上使用 .NET 進行開發

瞭解 .NET 開發平臺啟動和執行的基礎知識。.NET 框架由 Microsoft 於 2000 年釋出。該平臺的開源實現 Mono 在 21 世紀初成為了爭議的焦點,因為微軟擁有 .NET 技術的多
修改 Docker 容器對映的埠 Docker

修改 Docker 容器對映的埠

前言就執行中的容器而言,對於資源性的修改可以直接使用 docker update 進行改動,但是對映的埠、掛載等不可通過指令修改,雖然可以刪除容器再新建一個新的容器,除了此方案還可以修改容器的執行時配