高速開車換底盤記:Windows 與 Linux 部署都抗住了,但修車任務艱巨


抱歉,又是一篇流水賬,在排查問題的焦頭爛額中寫博客的確是一個挑戰,望大家見諒。

今天園友溪源More發了一篇博文博客園翻車啟示錄,而翻車之后的最新進展是——昨天下午我們又把 .net core 引擎的博客越野車開上了高速,現在依然行駛在高速上,今天上午我們邊開車邊給車換了個底盤,把 windows 換成了 linux(見頁腳"Powered by .NET Core 3.0 Preview 8 on Linux"),從中發現雖然車勉強能開,但修車任務艱巨。

流水賬開始。

昨天下午,部署在 windows 上的 .net core 版博客站點成功扛過了訪問高峰,當時用了7台4核8G服務器,與 .net framework 版使用的服務器數量一樣。

由於在 windows 上發布太麻煩了,不僅要復制所要發布的文件,還要停止 IIS 站點才能復制,不然會出現下面的錯誤提示,這點比不上 .net framework 。

cp: cannot create regular file '/c/websites/www.cnblogs.com-v2/Mapster.dll': Device or resource busy

於是,昨天晚上我們就准備 linux 上的 docker-compose 部署,並進行了試發布,將1台部署好的 linux 服務器加入了線上的負載均衡。

docker-compose pull
docker-compose down --remove-orphans
docker-compose --compatibility up --force-recreate -d 

之后出現的異常情況讓我們不敢自己的雙眼,數據庫服務器 CPU 100% 的問題在 Linux 上沒有使用 DbContextPool 的情況下昔日重來了。

2019-08-15 21:00:15.320 [Error] Failed executing DbCommand ("30,360"ms) [Parameters=["..."], CommandType='Text', CommandTimeout='30']"
...
Microsoft.EntityFrameworkCore.Database.Command
2019-08-15 21:00:15.321 [Error] An exception occurred while iterating over the results of a query for context type '"EfUnitOfWork"'.
System.Data.SqlClient.SqlException (0x80131904): Timeout expired.  
The timeout period elapsed prior to completion of the operation or the server is not responding.
 ---> System.ComponentModel.Win32Exception (258): Unknown error 258
   at System.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__126_0(Task`1 result)

在殘酷的事實面前,我們不得不承認我們錯怪了 DbContextPool ,這個詭異的問題是在某種未知的情況下偶然觸發的,昨天我們去掉 DbContextPool 后沒有出現問題,只是因為沒有觸發。

今天上午,我們將 docker-compose 部署 .NET Core 站點的 linux 服務器逐步上線了,在 11:00 左右全部換成了 linux 服務器,一共用了 6 台服務器,扛過了上午的訪問高峰。.net framework 版博客用的也是 6 台服務器,所以我們就默認部署了 6 台,linux 上的 .net core 版博客究竟多少台服務器可以撐住,我們還沒有驗證過。

其中 1 台 linux 服務器的 CPU 占用情況如下:

今天早上還發現了 Windows 服務器的一個異常情況,一夜之后,8G的內存幾乎被消耗殆盡,之前用 .net framework 版從來沒有出現過的問題,不知是昨天夜里 .net core GC 偷懶了,還是我們寫的代碼存在內存泄露問題?

流水賬就寫到這。

接下來我們最艱巨的修車任務是排查數據庫服務器 CPU 100% 的詭異問題。

Powered by .NET Core 系列博文:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM