繼續以流水賬的方式向大家匯報,自從上周六上午將 .net core 版博客站點從 windows 部署切換到 linux 上的 docker-compose 部署后,到目前一直在線。
Linux 上沒有出現在 windows 上遇到的一夜之后內存占用持續過高的 GC 偷懶情況,但這並不能說明 .net core gc 在 windows 有問題,可能是由於某種情況讓 gc 覺得不需要回收,由於我們的 .net core 版博客系統只會部署在 linux 上,所以 windows 上的問題不繼續排查。
數據庫服務器 CPU 100% 還是會出現,問題非常奇怪,而且很難復現,目前排查沒有進展。上周五下午 18:00 左右,遇到的 CPU 100% 問題更是詭異,服務器沒有接入流量,在容器啟動后一個 curl 請求就讓數據庫服務器 CPU 100%,也有可能是巧合。
在 Linux 上遇到了一個新的問題,有時阿里雲負載均衡會報 502 錯誤,刷新一下就會好,.NET Core 日志中沒有對應的日志,目前還沒找到問題的線索。
我們遇到的高並發性能問題也引起了微軟 .NET Core 團隊的關注,並得到了他們的技術支持,幫我們分析了通過 dotnet-trace 收集的 profile 數據(收集數據期間沒有發生數據庫 CPU 100%), 但沒有發現問題的線索。
dotnet-trace 在容器內收集 prfile 數據的命令如下
export PATH="$PATH:/root/.dotnet/tools dotnet-trace list-processes dotnet-trace collect --process-id <pid> --providers Microsoft-Windows-DotNETRuntime
注:容器需要使用 .net core sdk 鏡像才能安裝 dotnet-trace 。
今天上午下午的訪問高峰,行駛平穩。
對於 100% 與 502 問題,我們會進一步排查。
另外,我們也在優化程序減少 CPU 的消耗。
更新:
502 問題懷疑是負載均衡中某台服務器 CPU 出現波動突然跳到 100% ,如果用的是 windows ,表現是 503 ;現在用的是 linux ,表現就是 502 。
Powered by .NET Core 系列博文:
- 【故障公告】發布 .NET Core 版博客站點引起大量 500 錯誤
- 【網站公告】.NET Core 版博客站點第二次發布嘗試
- 暴風雨中的 online : .NET Core 版博客站點遭遇的高並發問題進展
- Powered by .NET Core 進展:驗證高並發性能問題嫌疑犯 docker swarm
- 同“窗”的較量:部署在 Windows 上的 .NET Core 版博客站點發布上線
- 做夢也沒有想到:Windows 上的 .NET Core 版博客系統表現更糟糕
- 峰回路轉:去掉 DbContextPool 后 Windows 上的 .NET Core 版博客表現出色
- Powered by .NET Core 進展0815:第5次發布嘗試(Windows部署)
- 高速開車換底盤記:Windows 與 Linux 部署都抗住了,但修車任務艱巨
園友相關博文: