Letzte Woche ist etwas Seltsames in unserer Datenbank passiert. Plötzlich wurde die Anwendung für unsere Benutzer blockiert, die keine neuen Entitäten usw. speichern konnten. Nachdem ich mir den Aktivitätsmonitor des SQL Servers (2008 mit Kompatibilitätsmodus 2005) angesehen hatte, sah ich die folgenden drei Einträge:
Nach einiger Zeit erhielten die Benutzer ein Verbindungszeitlimit. Wenn ich den Prozess 64 beendet habe, konnten sie wieder normal speichern.
Das Problem ist, dass die Entitäten, die sie während des Blocks speichern wollten, mehr als einmal (bis zu dreimal) in die Datenbank eingefügt wurden, obwohl es Code gibt, der dies verhindern sollte (Zahlenspalte, die eindeutig, aber ohne Einschränkung sein muss ... die Prüfung erfolgt im Code).
Wir verwenden Entity Framework 6.0.
- Weiß jemand von euch, warum und wann diese ASYNC_NETWORK_IO-Wartetypen auftreten und wie man sie vermeidet?
- Und was genau meinen sie?
quelle
Antworten:
ASYNC_NETWORK_IO
zeigt irgendwie an, dass die Clientanwendung die Ergebnisse nicht so schnell verarbeitet, wie SQL Server sie füttert. Dies kann durch ein Problem mit der Clientanwendung oder mit der Netzwerkverbindung zwischen dem Server und der Clientanwendung verursacht werden.Bitte beziehen Sie sich auf einen Beitrag von Thomas LaRock
oder dieser Beitrag von Joe Sack
Da Sie
entity framework
diesen Beitrag von Brent Ozar verwenden, kann er auch nützlich seinquelle
Es gibt einige Missverständnisse bezüglich des Wartetyps ASYNC_NETWORK_IO, hauptsächlich aufgrund des Namens, der auf das Netzwerkproblem hinweist, aber der Grund für diesen Wartetyp ist ziemlich selten.
Übermäßige Wartezeiten bei ASYNC_NETWORK_IO können in zwei Szenarien auftreten:
Die Sitzung muss warten, bis die Clientanwendung die von SQL Server empfangenen Daten verarbeitet hat, um das Signal an SQL Server zu senden, dass neue Daten zur Verarbeitung akzeptiert werden können. Dies ist ein häufiges Szenario, das möglicherweise ein schlechtes Anwendungsdesign widerspiegelt und die häufigste Ursache für übermäßige Wartetypwerte für ASYNC_NETWORK_IO ist.
Dies beinhaltet die Untersuchung der Anwendung, die die übermäßigen Wartetypwerte für ASYNC_NETWORK_IO verursacht, und die häufige Abstimmung mit den Anwendungsentwicklern, die sie erstellt haben.
Die Netzwerkbandbreite ist maximal. Ein verstopftes Ethernet führt zu einer langsamen Datenübertragung von der Anwendung hin und her. Dies an und für sich wird die Effizienz der Anwendung beeinträchtigen.
Weitere Details finden Sie auf dieser Seite
quelle