Suche

über alle News und Events

 

Alle News

 

Durable Function ist eine Erweiterung der...

Weiterlesen

Wir haben eine gute, vor allem spannende und hoch...

Weiterlesen

Am 09.05.2022 wurde ein Artikel von Microsoft...

Weiterlesen

Neben den altbekannten Logic Apps (Consumption),...

Weiterlesen

Im Jahr 2022 fallen eine Reihe von .Net Versionen...

Weiterlesen

SAP in die Power Platform integrieren – In einem...

Weiterlesen

Bicep Templates benutzen eine deklarative Syntax...

Weiterlesen

In BizTalk gibt es einige Alternativen, wie...

Weiterlesen

Wir sind auf ein seltsames Phänomen bei einem...

Weiterlesen

Nach der Migration konnten in VS 2019 „normale“...

Weiterlesen

How-to: Deadlocks in einer BizTalk-HV-Umgebung

In einer hochverfügbaren BizTalk Server 2013 Enterprise Installation mit abgesetztem SQL Server 2012 Cluster kam es sporadisch zu rätselhaften Deadlocks (allem Anschein nach immer bei hoher Last). In diesem quiTeq zeigt Arda, Support Engineer in Stuttgart, worin das Problem besteht und wie man es löst.

Problem

In der HV-Installation suspenden sich sporadisch Nachrichten und können nur manuell wieder resumed werden. Nicht gerade sehr erfreulich - v.a. bei hoher Last ;-( Die Ursache: Deadlocks. Eine typische Fehlermeldung im Eventlog lautete:

A message sent to adapter "HTTP" on send port "kunde.AS2.ORDERS-DESADV" with URI "http://80.149.96.170:4080" is suspended.
Error details: There was a failure executing the send pipeline:
edihub.kunde.pipelines.as2.AS2EdiSendRemoveTestIndicator, edihub.kunde.pipelines.as2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b0b82818d5063765" Source: "AS2 encoder" Send Port: "kunde.AS2.ORDERS-DESADV" URI: "http://80.149.96.170:4080" Reason: Unable to create the entry in the AS2 EDIINT MIC table. This could be caused by duplicate AS2-From, AS2-To and MessageID combinations being written to the table. Error: Transaction (Process ID 242) was deadlocked on lock | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

MessageId: {51079E0C-5031-438A-82AD-75CAB624D3A2}
InstanceID: {CDB378BA-8360-41EB-AA2A-5E90FA9BC4C7}

Da der Fehler nur sporadisch auftrat, konnte er nicht in der Anwendung liegen. Wir mussten tiefer graben und wurden schließlich in den DB-Einstellungen des BizTalk Servers für Parallelität fündig. Bei fehlerhafter Konfiguration werden bestimmte Nachrichtenvorgänge so parallel abgearbeitet, dass sie Ressourcen gegenseitig blockieren. Es kommt zu Deadlocks, welche die Nachrichtenverarbeitung auf einen Fehler laufen lassen. 

Lösung

Die Konfiguration für den Wert 'Max Degree of Parallelism' war nicht korrekt gesetzt.

Auf der Maschine, auf welcher der SQL Server mit der BizTalkMsgBoxDb läuft, müssen der Max Degree of Parallelism-run_value und -config_value beide auf den Wert '1' gesetzt sein. Andernfalls kann es tatsächlich bei höherer Last zu Deadlocks aufgrund falscher, paralleler Verarbeitung kommen.

Um herauszufinden, welchen Wert die Max Degree of Parallelism settings haben, kann man die folgende stored procedure auf der Master db im SQL Server ausführen:

exec sp_configure 'max degree of parallelism'

Wenn der run_value and config_value nicht beide den Wert '1' haben, kann man die folgende stored procedure im SQL Server ausführen, um diese auf '1' zu setzen:

exec sp_configure 'max degree of parallelism', '1'

reconfigure with override

Dann muss der SQL server neu gestartet werden. Und die Deadlocks sind erfolgreich ausgesperrt.

Ihre Kontaktmöglichkeiten

Sie haben eine konkrete Frage an uns


 

Bleiben Sie immer auf dem Laufenden


 

Mit meinem "Ja" erkläre ich mich mit der Verarbeitung meiner Daten zur Zusendung von Informationen einverstanden. Ich weiß, dass ich diese Erklärung jederzeit durch einfache Mitteilung widerrufen kann. Bei einem Nein an dieser Stelle erhalte ich zukünftig keine Informationen mehr.

© QUIBIQ GmbH · Impressum · Datenschutz