2016-09-08 4 views
1

Ich bin relativ neu zu asp.net und IIS Dinge, ich habe viele Apps mit anderen Technologien gemacht, aber noch nie ein solches Problem konfrontiert.Entity Framework-Abfrage braucht lange Zeit zum ersten Mal zu verbinden und auszuführen

Wir haben eine Testumgebung auf Azure mit allen erforderlichen virtuellen Maschinen eingerichtet, auf der die ASP.NET MVC 5.0-App auf einem Computer (IIS 7) gehostet wird, und eine andere Maschine, auf der SQL Server 2014 gehostet wird Code zuerst.

Das Problem ist, dass beim Öffnen einer Seite, die Datensätze aus einer Tabelle aus der Datenbank auflistet, es 15 Sekunden dauert, nur zum ersten Mal beim Öffnen der Website vom Chrome-Browser oder einem anderen Browser beim Navigieren Die Website braucht keine Zeit. Verlassen Sie die Website für 10 Minuten oder so, und kommen Sie zurück, das Problem passiert wieder, und es dauert nur 15 Sekunden wieder einmal.

tiefer Graben in der Ausgabe und nach Profilierung der Leistung, die den größten Teil der Zeit genommen, ist auf der ersten Zeit damit verbringen, die App die Datenbank berührt, zum Beispiel eine sehr einfache Abfrage:

model.Workflows.ToList(); 

Anscheinend Die Verbindung mit dem SQL-Server nimmt den größten Teil der Zeit in Anspruch. 15 Sekunden zum ersten Mal ist eine Menge Zeit zu akzeptieren, ich habe noch nie eine solche Verzögerung in irgendeiner Anwendung gesehen.

Das Objektdiagramm ist klein, es gibt nur 12 Tabellen mit sehr wenigen Datensätzen, sogar keine Datensätze für einige Tabellen, zum Beispiel enthält die Workflow-Tabelle nur 2 Datensätze. die Beziehungen sind kompliziert, aber nicht so viel.

Ich habe versucht, ohne Entity-Framework mit SqlConnection-Klasse verbinden, und es dauert 4 Sekunden zum ersten Mal auch, es ist viel besser, aber immer noch etwas falsch ist.

+1

Mögliches Duplikat von [Entity Framework Code - Beim Start zu langsam] (http://stackoverflow.com/questions/28338613/entity-framework-code-first-too-slow-at-startup) –

Antwort

0

Für diejenigen, die immer noch das gleiche Problem haben, habe ich viele gepostete Lösungen ohne Glück versucht, einschließlich des Links von Raderick und vielen anderen Ressourcen.

Das einzige, was für mich funktionierte, ist die Aktualisierung des gesamten Windows Server 2008 R2 (mit IIS 7.5) auf Windows Server 2012 R2 (mit IIS 8.5). Es sieht so aus, als ob es etwas mit der IIS-Leistung (vielleicht meinem Testlabor) und nicht mit dem Entity-Framework zu tun hat.

Es gibt eine sehr nützliche Option in IIS 8.5 in Windows Server 2012 r2, schauen Sie sich diese Links an Punkt 7 (Application Pool Suspension), die in meinem Fall einen riesigen Sprung in der Leistung gemacht.

http://www.infragistics.com/community/blogs/brijmishra/archive/2015/08/21/12-tips-to-increase-the-performance-of-asp-net-application-drastically-part-2.aspx

Ich weiß, dass es nicht die erste Option Lösung ist, aber es kann in einigen Fällen helfen.

Verwandte Themen