2
我們在Ubuntu 14.04上的Docker容器中運行.NET Core 1.1 API。 API通過EF Core與各種SQL Server數據庫交互,我們所看到的是數據庫連接沒有被清理,也沒有被重用。我們通過sp_who2查詢快速查看數據庫上的數千個連接。如何確保我們的.NET Core API清理數據庫連接?
- 所有連接都使用相同的連接字符串創建,因此連接池應該能夠工作。
- 的LastBatch時間上的連接沒有及時更新,所以它們不會出現要被重用,如你所期望,如果他們合併。
- 調用數據庫的對象定義爲
Scoped
生命週期,所以應在每次會話後清理。 - 冬眠犀牛EF探查似乎顯示DbContexts被清理一貫內EF。
- 的連接數不增加每次數據庫被擊中的時候,所以它可能是特定的代碼 - 我們仍然在試圖敲定下來。
- 我們的測試表明,在IIS或IIS快遞在Windows上運行時,這種情況不會發生,所以它似乎是專門針對碼頭工人或Ubuntu。
難道這是由.NET核心設計?或者我們錯過了一個竅門?我們如何強制EF做一些連接清理?
嗯,這是一個很不錯的故事,所有的,但我們應該怎麼知道,如果你不告訴我們你的代碼?請創建一個[mcve]。 –
@ZoharPeled - 通常我同意並努力做到這一點,但它是根本不可能在這種情況下 - 這是一個廣泛的一些可能的原因這是不容易重現一個問題,我問,如果其他人經歷過它。從我的答案你會看到,如果我製作了代碼,大多數人都會說「這對我來說很好」,因爲沒有那麼多人在使用Ubuntu。 – Peter
很好。 upvoted你的答案。 –