EF-Core und big-traffic führt zu max Poolgröße wurde erreicht Fehler

Verwenden wir ASP.NET Entity Framework-Kern für Abfragen unsere MSSQL-Datenbank-in unserem Web-API app. Manchmal, wenn wir große Verkehr, die Abfrage an die DB endet mit dieser Fehlermeldung:

Timeout ist abgelaufen. Das Zeitlimit wurde vor dem anfordern einer Verbindung aus dem pool. Dies stattgefunden haben könnte, weil alle zusammengefasste verbindungen wurden in verwendet und die maximale Poolgröße wurde erreicht.

Ich Frage mich, ob unserem Muster mit DbContext und die Abfrage korrekt ist, oder wenn ich bin fehlen einige verwenden/entsorgen, - Muster und-Fehler wird verursacht durch ein memory leak (nach einiger recherche Las ich dann, ich sollte nicht verwenden, verwenden, da die Lebensdauer wird geleitet von den Rahmenbedingungen). Ich bin nach Dokumentation...

Mein connectionString:

"myConnection": "Server=xxx;Database=xxx;user id=xxx;password=xxx;Max Pool Size=200;Timeout=200;"

Mein Start.cs

public void ConfigureServices(IServiceCollection services)
    {
    .....
    //scoped context            
    services.AddDbContext<MyDbContext>(
            options => options.UseSqlServer(this.Configuration.GetConnectionString("myConnection")));
    }

dann im Controller verwendete ich dbcontext von dependency injection:

public class MyController : Controller
   public MyController (MyDbContext context)
    {
        this.Context = context;            
    }

    public ActionResult Get(int id)
    {
        //querying
        return this.Context.tRealty.Where(x=>x.id == id).FirstOrDefault();
    }

Sollte ich so etwas wie:

using (var context = this.Context)
        {
            return this.Context.tRealty.Where(x => x.id == id).FirstOrDefault();
        }

Aber ich denke, dass dies ist eine schlechte Muster, wenn ich mit dependency injection von DbContext.

  • Scheint, wie Sie haben Ihre eigene Frage beantwortet.
  • Also sollte ich mit Verwendung wenn ich die Abfrage dbcontext wird Hinzugefügt, die durch dependency injection...
  • Der DI-container sollte kümmern sich um die Entsorgung der Kontext, also Nein.
InformationsquelleAutor Vít Zaoral | 2016-09-29
Schreibe einen Kommentar