BizTalk-Serverproblem

8

Wir haben einen BizTalk-Server (einen virtuellen Server (1!) ...) in unserem Unternehmen und einen SQL-Server, auf dem die Daten gespeichert werden. Jetzt haben wir viel Datenverkehr. Ich rede von Hunderttausenden. Ich bin also nicht einmal sicher, ob ein Server wirklich sicher ist, aber unser Unternehmen ist nicht so einfach zu überzeugen.

Jetzt haben wir in letzter Zeit viele Probleme.

Erlauben Sie mir, im Detail zu situieren, damit mir nichts fehlt:

Unser Server hat 5 Anwendungen:

  • Eins mit 3 Orchestrierungen, 12 Sendeports, 16 Empfangsstellen.
  • Eins mit 4 Orchestrierungen, 32 Sendeports, 20 Empfangsstellen.
  • Eins mit 4 Orchestrierungen, 24 Sendeports, 20 Empfangsstellen.
  • Eins mit 47 (ja 47) Orchestrierungen, 37 Sendeports, 6 Empfangsstellen.
  • Eins mit gemeinsamer Anwendung mit ein paar Ressourcen.

Unsere Probleme sind aufgetreten, seit wir die Anwendungen mit den 47 Orchestrierungen bereitgestellt haben. Viele dieser Orchestrierungen verwenden Formen zuweisen, die c # -Code für das Mapping verwenden. Dies liegt daran, dass wir HL7-Erweiterungen verwenden, und das ist etwas Besonderes, so dass wir c # code & amp; Xpath war es viel einfacher, das Mapping zu tun, da viele dieser Schemas gleich aussehen. Das c # liest XmlNodes ein, die über Xpath empfangen wurden, und gibt XmlNode zurück, die wiederum BizTalk-Nachrichten zugewiesen werden. Ich bin mir nicht sicher, ob das der Grund sein könnte, aber ich dachte, ich würde es erwähnen.

Die Sende- und Empfangsports haben viele verschiedene Typen: Datei, MQSeries, SQL, MLLP, FTP. Jeder dieser Typen hat unterschiedliche Host-Instanzen, um die Last auszugleichen. Unsere Orchestrierungen verwenden den BiztalkApplication-Host.

Auf diesem Server laufen auch ein paar Skripte, meist ftp upload scripts & amp; auch ein Zipper-Skript, das Dateien jede halbe Stunde in einer täglichen Zip-Datei komprimiert und die Zip-Dateien nach einem Monat löscht. Wir verwenden dieses ZIPScript für unsere Backup-Dateien (wir sichern viel, Backups sind auch auf unserem Server), wir haben dies getan, weil der Server Probleme mit dem Senden von Dateien an einen Ort hatte, an dem es sehr viele Dateien gab, also danach Die Dateien wurden auf Reißverschlüsse reduziert, es ging besser.

Die Probleme, die wir in letzter Zeit haben, sind hauptsächlich zwei Hauptprobleme:

  • Unser wichtigstes Problem ist das Folgende. Wir haben einen Empfangsort mit vielen Nachrichten in einer Warteschlange zum Testen behalten. Nachdem wir diesen Empfangsort gestartet haben, der die 47 Orchestrierungen verwendet, beginnen die laufenden Dienstinstanzen, in den Himmel zu rocken. Ok, das ist ziemlich normal. Sagen wir ungefähr 10000, und dann stoppen wir den Empfangsort, um zu sehen, wie biztalk diese 10000 Instanzen behandelt. Normalerweise würden sie ziemlich schnell untergehen, manchmal sogar, aber nach einer Weile beginnt sie zu "drosseln", was bedeutet, dass sie nicht mehr verarbeitet werden und die Dienstinstanzen auf der gleichen Nummer bleiben, zum Beispiel in 30 Sekunden von 10000 bis 4000 und dann bleibt es bei 4000 und es senkt sich sehr sehr sehr langsam, wie 30 in 5 Minuten oder so. Das heißt also, dass auch alle anderen Dienstinstanzen der anderen Anwendungen hier stecken bleiben und auch nicht verarbeitet werden.

Wir haben festgestellt, dass nach dem Neustart unserer Host-Instanzen die Instanznummer wieder schnell gesunken ist. Wir haben also versucht, verschiedene Host-Instanzen selektiv neu zu starten, um das Problem zu lokalisieren. Wir haben festgestellt, dass ein Neustart der Sende- / Empfangs-Host-Instanz der Datei den Zweck erfüllen würde. Also dachten wir, Dateisendungen wären das Problem. Angesichts der Tatsache, dass wir viele Backups machen. Daher haben wir die Dateitypsicherungen durch mqseries-Sicherungen ersetzt. Das gleiche Problem ist aufgetreten, und lustige Sache, Neustart der Datei senden / empfangen Host behebt das Problem immer noch.

In der Ereignisanzeige können keine Fehler gefunden werden.

  • Ein zweites Problem, das wir haben, ist. Manchmal gegen 6 Uhr werden alle oder ein Teil der Host-Instanzen gestoppt.

In der Ereignisanzeige haben wir die folgenden Fehler bemerkt (dies sind mehrere):

  

Der Empfangsort "MdnBericht SQL" mit der URL "SQL: // ZNACDBPEG / mdnd0001 /" wird heruntergefahren. Details: "Die Fehlerschwelle wurde überschritten. Der Empfangsort wird heruntergefahren.".

     

Die Messaging Engine konnte keinen Empfangsspeicherort "M2m Othello Export Start Bestand" mit der URL "\ m2mservices \ Othello_import $ \ DataFilter Start * .xml" zum Adapter "FILE" hinzufügen. Grund: "Der FILE-Adapter kann nicht auf den Ordner \ m2mservices \ Othello_import $ \ DataFilter Start zugreifen.    Stellen Sie sicher, dass dieser Ordner existiert.    Fehler: Anmeldefehler: unbekannter Benutzername oder falsches Passwort.    ".

     

Der FILE-Adapter kann nicht auf den Ordner \ m2mservices \ Othello_import $ \ DataFilter Start zugreifen.    Stellen Sie sicher, dass dieser Ordner existiert.    Fehler: Anmeldefehler: unbekannter Benutzername oder falsches Passwort.

     

Der Versuch, eine Verbindung mit der SQL Server-Datenbank "BizTalkMsgBoxDb" auf dem Server "ZNACDBBTS" herzustellen, ist fehlgeschlagen.    Fehler: "Anmeldung für Benutzer fehlgeschlagen." Der Benutzer ist keiner vertrauenswürdigen SQL Server-Verbindung zugeordnet."

Es würde scheinen, dass es zu diesem Zeitpunkt einen Login-Fehler gibt und dass deswegen auch andere Dienste Probleme haben, und schließlich werden sie heruntergefahren.

Die Sache ist, unser Benutzer ist Admin, und es ist unmöglich, dass das Passwort "manchmal" falsch ist. Wir denken, dass das Problem auf ein Infrastrukturproblem zurückzuführen sein könnte, aber das ist nicht wirklich Abteilung.

Ich weiß, dass es ein langer Post ist, aber wir sind nicht mehr sicher, was wir tun sollen. Würde das Hinzufügen eines anderen Servers und das Ausgleichen der Last unsere Probleme lösen? Gibt es eine Möglichkeit, unser Gleichgewicht zu messen und zu wissen, wo wir anfangen zu spalten? Wie lauten die normalen Ladezahlen?

Ich freue mich über jede Antwort, denn diese Probleme werden schlimmer und wir haben auch eine Frist.

Vielen Dank für die Antworten!

    
WtFudgE 10.12.2009, 10:35
quelle

6 Antworten

8

Ihr unmittelbares Problem ist BizTalk Drosselung Feature . Es soll BizTalk helfen, vorübergehende Überlastungsbedingungen zu überleben. Eines der vielen Probleme ist, dass Sie den Throttling-Kick-in nur im Performance-Monitor und nicht im Ereignisprotokoll sehen können.

Was Sie tun sollten:

  1. Trennen Sie die neue Anwendung von einem anderen Host als die übrigen Anwendungen. Die Drosselung erfolgt auf der Host-Ebene. Die problematische Anwendung wird also den Rest der Anwendungen nicht beeinflussen.
  2. Lesen Sie im obigen Link, wie Sie die Drosselung deaktivieren.
  3. Was wir getan haben, ist die Implementierung eines externen Drosselungsdienstes. Das füttern den BizTalk-Empfangsspeicherort in kleinen verdaulichen Paketen. Es ist hässlich, aber das Problem ist hässlich.

Aktualisieren für Kommentar: Sie haben genügend Host-Instanzen. Also ignoriere diesen Rat. Sie können die Anwendungen zwischen den Instanzen neu anordnen. Aber dafür gibt es keine klaren Richtlinien. So ist es nur Mischen und Raten Über die Sicherheit der Deaktivierungsdrosselung. Diese Funktion ist in vielen Szenarien nicht sinnvoll. Du musst es studieren. Überprüfen Sie, welchen der Throttling-Parameter Sie treffen (dies wird im Performance-Monitor angezeigt) und entscheiden Sie, wie Sie die Schwellenwerte ändern.

    
Igal Serban 10.12.2009, 18:05
quelle
3

Wie viele Host-Instanzen haben Sie?

Aus der Zeile:

  

Die Sende- und Empfangsports haben eine Menge   verschiedener Typen: Datei, MQSeries,   SQL, MLLP, FTP. Jeder dieser Typen   habe eine andere Host-Instanzen, um   die Last ausgleichen. Unser   Orchestrierungen benutzen das   BiztalkApplication-Host

Es klingt, als ob Sie viel haben - Ich habe kürzlich ein System überprüft, in dem BizTalk selbst drosselte und das Problem teilweise auf zu viele Host-Instanzen zurückzuführen war. Jede Host-Instanz belastet die BizTalk-Nachrichtenbox und kaut mindestens 200 MB Arbeitsspeicher.

Wenn Sie Ihren Kommentar lesen, haben Sie 20 - das ist zu viel und wäre ein großer Teil Ihrer Probleme.

Ein gutes Start-Host-Setup wäre:

  • Ein dedizierter Tracking-Host
  • Ein Host, der alle Empfangshandler für Adapter enthält
  • Ein Host, der alle Orchestrierungen enthält
  • Ein Host, der alle Sende-Handler für Adapter enthält
  • Ein Host für Adapter, die geclustert werden müssen (wie FTP und MSMQ)

Sie können dann auch Dinge wie die Einführung von "Echtzeit" -Hosts und Batch-Hosts in Betracht ziehen, sodass Sie die Echtzeit-Hosts für niedrige Latenzzeiten optimieren können.

Sie können auch Hosts für bestimmte Anwendungen haben, wenn bekannt ist, dass sie instabil sind, aber das sollte im Allgemeinen nicht geschehen.

    
David Hall 11.12.2009 00:17
quelle
1

Ich führe ein BizTalk-System aus, das ähnliche Probleme hat und sich mit dem, was Sie sehen, einfühlen kann. Ich weiß nicht, ob es gleich ist, aber ich dachte, ich würde meine Erfahrung mit anderen teilen.

Auf die gleiche Weise scheint das Neustarten des Sende / Empfangs das Problem zu beheben. In meinem Fall fand ich eine direkte Korrelation zur Speichernutzung durch die Host-Prozesse. Ich habe Leistungsindikatoren verwendet, um zu sehen, wann ein bestimmter Host für den Speicher gedrosselt wurde. Durch das Erstellen zusätzlicher Hosts und das Verschieben von Orchestrierungen und Ports zwischen ihnen konnte ich eingrenzen, welche Business-Sets das Problem verursachten. In meinem Fall war das Neustarten der Hosts das Äquivalent zur ultimativen "Garbage Collection", um Speicher freizugeben. Das war natürlich, bis genug Instanzen kamen, um es wieder zu verschlingen.

Ich fürchte, ich habe das Problem noch nicht gelöst, aber ein paar Dinge, die ich gefunden habe, um das Problem zu lindern:

  1. Heben Sie den Speicher für einen bestimmten Prozess auf, sodass keine Drosselung auftritt oder später auftritt
  2. Jede Host-Instanz hat, obwohl sie informativ ist, einen Overhead, der hinzugefügt wird. Versuchen Sie Hosts zu kombinieren, die nicht Ihr Problem sind, um den Speicherbedarf zu reduzieren.
  3. Werfen Sie Hardware auf das Problem, Ram ist billig
  4. Ich mißme alle paar Minuten in perfmon, um festzustellen, wo das Problem liegt:

    BizTalk: MessageAgent (*) \ Prozessspeicherauslastung (MB)

    BizTalk: MessageAgent (*) \ Schwellenwert für Prozessspeicherauslastung

    Speicher \ Verfügbare MBytes

Ein paar andere Dinge, die man sich ansehen sollte. Stellen Sie sicher, dass alle benutzerdefinierten Pipelines gute BizTalk-Speicherpraktiken verwenden (d. H. Keine XML-DOM-Manipulation, die sich irgendwo versteckt, usw.). Theoretisch sollte auch die Anzahl der Threads für einen bestimmten Host verringert werden, um die Menge an Speicher zu reduzieren, die es gleichzeitig erfassen kann. Mit diesem schien ich nicht viel Glück zu haben. Vielleicht hat die BizTalk-Drosselung es übertrieben, wie andere erwähnt haben, ich weiß es nicht. Wenn Sie die Perfmon-Ergebnisse an einen CSV ablegen, können Sie mit Excel einige Diagramme zur Speicherbelegung erstellen. Dies könnte nützlich sein, um mit dem Management über den Kauf von mehr Hardware zu sprechen. Angenommen, Ihr Problem passt auch in dieses Szenario.

    
Andrew Dunaway 11.12.2009 20:52
quelle
1

Wir haben das Problem vorübergehend aufgrund einer Kombination aller Antworten behoben.

Wir haben die Parameter für die Verwendung des Prozessspeichers zur Verwendung bei einigen Hosts höher gesetzt.

Wir haben das Gleichgewicht der Host-Instanzen besser aufgeteilt, nachdem ich die gesamte Speicherauslastung aller Hosts analysiert habe, dank Leistungsindikatoren und auch mit dem Tool MsgBoxViewer.

Und jetzt versuchen wir mehr physischen Speicher zu bekommen & amp; hoffentlich auch ein extra Server oder ein 64bit Server.

Danke für alle Antworten!

    
WtFudgE 17.12.2009 11:21
quelle
1

Wir haben kürzlich einen 64-Bit-Server im Cluster mit unserem älteren Server installiert. Dadurch können wir das Gedächtnis noch besser ausbalancieren, was viele Probleme gelöst hat.

Obwohl das 64-bit uns nicht viele Verbesserungen gab (außer etwas mehr Speicher), da es keine 64-Bits auf IBM MQs, MLLPs, HL7-Pipelines usw. verwenden kann ...

    
WtFudgE 23.03.2010 12:02
quelle
0

Die anderen Antworten sind hilfreich für die Laufzeitoptimierung, aber ich würde auch eine Designänderung empfehlen.

Sie sagen, dass Sie in den Nachrichtenzuordnungsformen in der Orchestrierung viel Nachrichtenmanipulation durchführen.

Ich würde empfehlen, diesen Code in dedizierte Transformationen zu verschieben. Sie sind viel leichter und können schneller ausgeführt werden. Sie können benutzerdefinierte xslt und c# in diesen Karten kombinieren, um die harte Arbeit zu erledigen. Orchestrierungen kosten bei der Entwicklung, beim Design und beim Testen mehr und in der Laufzeit viel mehr.

Sie können dann Transformationen für die Nachrichtenumwandlung verwenden und das Orchestrieren (was nach dem Verschieben des Nachrichtenzuweisungscodes übrig bleibt) den Orchestrierungen überlassen.

Der zusätzliche Vorteil der Verwendung von Transformationen über Orchestrierungen besteht darin, dass sie wesentlich überprüfbarer sind.

    
oɔɯǝɹ 28.12.2014 23:35
quelle