Bug description
I want to use the DbContext pool. Because I have a few places where it's up to the developer to properly dispose the DbContext I want to monitor pool usage and context disposal.
There are no metrics for the pool (e.g. rented out db contexts), so I tried monitoring the 'microsoft.entityframeworkcore.active_dbcontexts' metric. However I notice that this metric is not correct when used in combination with a pool.
I know that the metric includes the idle contexts in the pool as discussed in #35855 , but whenever the pool is exhausted and falls back to creating new contexts, those contexts are also not decremented from the metric after disposal, so you get an ever-incrementing metric. I can monitor the internal pools _count field to check if the pool is not getting saturated, but that also doesn't give me the full picture.
E.g. if you have a pool limit of 50 and rent 75 db contexts at once, of which you return 60, the internal pool _count will show that you have 50 contexts available and the active_dbcontexts metric will show 75 contexts. There is no way to deduce that there are in fact 15 active/lingering contexts.
A project to reproduce and show this error can be found here.
Your code
https://github.com/gijs-hendrikx/DbContextPool_Debugger
Stack traces
Verbose output
EF Core version
9.0.5
Database provider
No response
Target framework
.NET 10.0
Operating system
Windows 11
IDE
No response
Bug description
I want to use the DbContext pool. Because I have a few places where it's up to the developer to properly dispose the DbContext I want to monitor pool usage and context disposal.
There are no metrics for the pool (e.g. rented out db contexts), so I tried monitoring the 'microsoft.entityframeworkcore.active_dbcontexts' metric. However I notice that this metric is not correct when used in combination with a pool.
I know that the metric includes the idle contexts in the pool as discussed in #35855 , but whenever the pool is exhausted and falls back to creating new contexts, those contexts are also not decremented from the metric after disposal, so you get an ever-incrementing metric. I can monitor the internal pools _count field to check if the pool is not getting saturated, but that also doesn't give me the full picture.
E.g. if you have a pool limit of 50 and rent 75 db contexts at once, of which you return 60, the internal pool _count will show that you have 50 contexts available and the active_dbcontexts metric will show 75 contexts. There is no way to deduce that there are in fact 15 active/lingering contexts.
A project to reproduce and show this error can be found here.
Your code
Stack traces
Verbose output
EF Core version
9.0.5
Database provider
No response
Target framework
.NET 10.0
Operating system
Windows 11
IDE
No response