- 第1集:驗證 .NET 5.0 正式版 docker 映象問題
- 第2集:碼中的小窟窿,背後的大坑,發現重要嫌犯 EnyimMemcachedCore
- 第3集-劇情反轉:EnyimMemcachedCore 無罪,.NET 5.0 繼續背鍋
- 第4集:一個.NET,兩手準備,一個issue,加倍關注
考慮到案情的複雜性與戲劇性,今天我們進行了第2手準備,從基於 .NET 5.0 的最新版部落格系統修改出 .NET Core 3.1 版。之前回退的 .NET Core 3.1 版是10月14日生成的,中間相差了30多個釋出,降級太多,不能長時間線上上使用,有了最新的 .NET Core 3.1 版,一是做好長期破案准備,二是確認一下是否是中間的程式碼修改造成的問題,今天晚上8點左右會發布這個 .NET Core 3.1 版。
今天,我們在 .NET 5.0 的總部看到一個11月15日提交的issue —— Garbage Collection Thread is blocked waiting for another thread for 10 seconds or more,被開頭的 description 吸引:
Performance issues observed in a web application when one of API end point starting responding slow due to slow file share dependency. But it triggered unexpected behavior which we have not seen before, i.e. 503, time out (Redis) exceptions & intermittent hangs. Primarily due to GC Thread is blocked by another thread.
問題表現與我們遇到的類似,雖然 github 上反饋的這個問題是在 .NET Framework 4.7.1 上出現的,但 .NET 5.0 是 .NET Framework 與 .NET Core 的統一,所以不能說毫不相關,微軟已經為這個 issue 打上了 area-VM-coreclr
標籤,值得加倍關注。