Freigeben über


Vermeiden von DBNETLIB-Ausnahmen

DBNetLib -Fehler (Datenbanknetzwerkbibliothek) treten auf, wenn die BizTalk Server-Laufzeit nicht mit den MessageBox- oder Verwaltungsdatenbanken kommunizieren kann. Wenn dies der Fall ist, wird die BizTalk Server-Laufzeitinstanz, die die Ausnahme abfängt, heruntergefahren und durchläuft dann jede Minute einen Zyklus, um zu überprüfen, ob die Datenbank verfügbar ist.

Die häufigste Ursache für einen DBNetLib-Fehler ist, wenn einer der (möglicherweise vielen) MessageBox-Datenbankserver extrem ausgelastet wird und weitere Versuche, mit ihr zu kommunizieren, zu einem Timeout führen, was zu einer DBNetLib-Ausnahme führt.

Zusätzlich zu dem Fall, in dem die MessageBox-Datenbank einfach sehr ausgelastet ist, kann der DBNetLib-Fehler in einer Produktionsumgebung auftreten, wenn BizTalk-Datenbankserver, die eine von mehreren MessageBox-Datenbanken hosten, zu E/A (Eingabe/Ausgabe) gebunden werden.

In diesem Thema werden Bedingungen beschrieben, die zu DBNetLib-Fehlern und Empfehlungen zur Vermeidung dieser Fehler führen können.

Ursache und Lösung für den DBNetLib-Fehler

Symptome eines DBNetLib-Fehlers

Eine Hostinstanz von Microsoft BizTalk Server beendet und startet dann selbst neu, und Fehler, die dem folgenden ähneln, werden in das BizTalk Server-Anwendungsprotokoll geschrieben:

Event Type:Warning  
Event Source:BizTalk Server <version>  
Event Category:BizTalk Server <version>   
Event ID:5410  
Computer:BIZTALKSERVER  
Description:  
An error occurred that requires the BizTalk service to terminate. The most common causes are the following:  
 1) An unexpected out of memory error.  
 OR  
 2) An inability to connect or a loss of connectivity to one of the BizTalk databases.   
 The service will shutdown and auto-restart in 1 minute. If the problematic database remains unavailable, this cycle will repeat.  
  
 Error message: [DBNETLIB][ConnectionWrite (send()).]General network error. Check your network documentation.  
 Error source:    
  
 BizTalk host name: BizTalkHost  
 Windows service name: BTSSvc$BizTalkHost   
  
---------------------------------------------------------  
Event Type:Error  
Event Source:BizTalk Server <version>  
Event Category:BizTalk Server <version>   
Event ID:6913  
Computer:BIZTALKSERVER  
Description:  
An attempt to connect to "BizTalkMsgBoxDb" SQL Server database on server "SQLSERVER " failed.  
 Error: "[DBNETLIB][ConnectionWrite (send()).]General network error. Check your network documentation."  

BizTalk-Datenbankserver, die MessageBox-Datenbanken hosten, werden an E/A gebunden

BizTalk-Server kommunizieren und agieren direkt mit den Datenbankservern, auf denen die MessageBox-Datenbanken gehostet werden. Wenn einer der Datenbankserver, auf denen die MessageBox-Datenbanken gehostet werden, überlastet wird und in einen I/O-gebundenen Zustand (Input/Output) gerät, reagiert dieser möglicherweise nicht mehr. Einer der BizTalk-Server kann wiederum die Verbindung mit einem dieser Datenbankserver verlieren, und ein DBNetLib-Fehler tritt auf.

Unsere Tests zeigen, dass ein stark ausgelasteter Datenbankserver Engpässe im E/A aufweist, wenn die "%Idle-Zeit" des physischen Datenträgers weiterhin abfällt und unter 10%fällt. Wenn die "%Idle Zeit" weiterhin unter dieses Niveau fällt, ist dies ein Hinweis darauf, dass Ihr Datenbankserver möglicherweise nicht mehr reagiert.

Ursache

Es gibt mehrere Gründe, die dazu führen können, dass die Datenbankserver, auf denen die MessageBox-Datenbanken gehostet werden, zu E/A-gebunden werden, einige davon sind:

  • Wenn der Datenbankcomputer, auf dem die MessageBox-Datenbank gehostet wird, an niedrige Hardwarespezifikationen gebunden ist, z. B. geringer Arbeitsspeicher, Anzahl und Geschwindigkeit von Prozessoren usw.

  • Wenn der physische Datenträger auf dem Datenbankcomputer, auf dem eine MessageBox-Datenbank gehostet wird, von anderen stark verbrauchten Datenbanken gemeinsam genutzt wird. In Fällen, in denen mehrere Datenbanken, einschließlich der MessageBox, gleichzeitig intensiv genutzt werden, kann der physische Datenträger in eine E/A-gebundene Lage geraten.

    Ein Beispiel für eine solche Situation ist Folgendes:

    Unsere Tests zeigen, dass der Datenbankserver, auf dem die BizTalkDTADb- und/oder BAM-Datenbanken gehostet werden, manchmal hohe Prozentsätze der %Disk Lese- und Schreibzeiten eines physischen Datenträgers verbrauchen. Wenn der Datenbankserverdatenträger, auf dem eine MessageBox-Datenbank gehostet wird, von einer anderen stark verbrauchten Datenbank wie BizTalkDTADb oder BAM gemeinsam genutzt wird und beide Datenbanken gleichzeitig verwendet werden, kann dies dazu führen, dass der physische Datenträger des Datenbankservers an E/A gebunden und dann nicht mehr reagiert.

  • Wenn BizTalkDTADb und eine oder mehrere der MessageBox-Datenbanken denselben physischen Datenträger auf dem Datenbankserver verwenden und wenn die Archivierung und Bereinigung nicht häufig ausgeführt wird, könnte der Datenträger möglicherweise E/A-gebunden werden.

Beschluss

Stellen Sie sicher, dass die Datenbankserver, auf denen die BizTalk MessageBox(en) gehostet werden, nicht übermäßig ausgelastet werden, was zu einer fehlenden Reaktionsfähigkeit führen könnte.

Einige der Hauptursachen eines Serverdatenträgers, der stark verbraucht wird, sind unten aufgeführt, zusammen mit Empfehlungen zur Behebung dieses Problems.

Niedrige Hardwarespezifikationen

Unsere Tests zeigen, dass der Server mehr Ressourcen verbraucht, wenn seine Hardwarespezifikationen nicht mit der Auslastung Schritt halten können, die er zu verarbeiten versucht. Mit niedrigeren Hardwarespezifikationen wird das System schnell von der Menge der Aktivitäten in den Datenbanken überwältigt. Dies kann dazu führen, dass die %Disk Lese- und Schreibzeiten des Servers weiter steigen, ohne sich zu stabilisieren, auch die %Idle Zeit des Datenträgers weiter zu verringern und niedriger als 10%zu werden, und dies kann dazu führen, dass der Datenbankserver nicht mehr reagiert.

Abhängig von der Menge der Aktivitäten und der Last in Ihrer BizTalk-Bereitstellung, falls Sie feststellen, dass Ihre Datenbankserver bei hoher Last nicht reagieren, sollten Sie erwägen, die folgenden Komponenten Ihrer Datenbankserver zu aktualisieren: die Anzahl der CPUs, den Arbeitsspeicher und die Verbindung zu einem SAN herzustellen. Natürlich sollten Sie die richtige Diagnose ausführen, um herauszufinden, welcher Teil (Arbeitsspeicher, Anzahl von CPUs usw.) der Engpass ist, der in Ihrer Hardware aktualisiert werden muss.

Freigeben eines Servers oder Datenträgers für mehrere BizTalk-Datenbanken

Wie bereits erwähnt, können andere Datenbanken als MessageBoxes, z. B. die BizTalk Tracking (BizTalkDTADb)-Datenbank und BAM-Datenbanken, hohe Zyklen auf dem physischen Datenträger eines Servers verbrauchen. Wenn diese Datenbanken also denselben physischen Datenträger wie die MessageBox-Datenbanken gemeinsam nutzen, drosseln sie möglicherweise den Datenträger und machen ihn unresponsiv, was wiederum dazu führen kann, dass die BizTalk-Server die Verbindung zu den MessageBox-Datenbanken verlieren und somit DBNetLib erreichen.

Es wird dringend empfohlen, jede Datenbank, die voraussichtlich einen hohen Verbrauch des physischen Datenträgers des Servers verursacht, von den BizTalk MessageBox(en) zu trennen, sodass sie unterschiedliche physische Datenträger verwenden (oder auf verschiedenen Servern untergebracht werden). Es wird empfohlen, die BizTalkDTADb- und BAM-Datenbanken auf eigenen separaten Laufwerken/Servern von den MessageBox(en) zu trennen, und es wird auch empfohlen, jede MessageBox-Datenbank (in dem Fall gibt es mehrere) auf dem eigenen Datenträger zu verwenden.

Archivierung und Bereinigung

Wenn Sie BizTalkDTADb- und MessageBox-Datenbanken auf demselben Server gemeinsam verwenden, müssen Sie Ihre BizTalkDTADb-Datenbanken regelmäßig archivieren und löschen, andernfalls werden sie auf unbestimmte Zeit vergrößert.

Testläufe deuten darauf hin, dass es gute Praxis ist, regelmäßig zu archivieren und zu bereinigen. Wenn Sie jedoch unter höheren Lasten als üblich arbeiten, sollten Sie in Betracht ziehen, häufiger zu archivieren und zu bereinigen. Wenn das Wachstum der BizTalkDTADb-Datenbank nicht regelmäßig beibehalten wird, können sie, wenn diese Aktionen schließlich ausgeführt werden, erhebliche Zeit in Anspruch nehmen und die meisten verfügbaren Datenbankserverressourcen verbrauchen, während sie ausgeführt werden.