相關博文:
- 【故障公告】釋出 .NET Core 版部落格站點引起大量 500 錯誤
- 【網站公告】.NET Core 版部落格站點第二次釋出嘗試
- 暴風雨中的 online : .NET Core 版部落格站點遭遇的高併發問題進展
抱歉,.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 部署是否能夠在訪問高峰長時間持續穩定執行以及需要多少臺伺服器?待進一步驗證。