Frage

Ich habe eine Anwendung, die in einem Business2Business Netzwerk befinden werden, das mit unserer AS400 in unserer internen Netzwerkumgebung kommunizieren. Die Firewall so konfiguriert wurde, die Datenanforderung durch unseren AS400 zu erlauben, aber wir sind eine große Zeitverzögerung in der Verbindungsgeschwindigkeit und Reaktionszeit zu sehen. Zum Beispiel, was dauert weniger als ein halbe Sekunde in unseren lokalen Entwicklungsumgebungen nach oben von 120 Sekunden in unserer B2B Umwelt.

Dies ist die Funktion, dass wir unsere Daten erhalten werden, unter Verwendung zu. Wir nutzen die Enterprise Library Applikationsbausteine, so dass das ASI-Objekt ist die Datenbank ...

/// <summary>
/// Generic function to retrieve data table from AS400
/// </summary>
/// <param name="sql">SQL String</param>
/// <returns></returns>
private DataTable GetASIDataTable(string sql)
{
    DataTable tbl = null;

    HttpContext.Current.Trace.Warn("GetASIDataTable(" + sql + ") BEGIN");
    using (var cmd = ASI.GetSqlStringCommand(sql))
    {
        using (var ds = ASI.ExecuteDataSet(cmd))
        {
            if (ds.Tables.Count > 0) tbl = ds.Tables[0];
        }
    }
    HttpContext.Current.Trace.Warn("GetASIDataTable() END");
    return tbl;
}

Ich versuche, einige Ideen zu sammeln zu prüfen, warum dies geschieht.

War es hilfreich?

Lösung

Haben nie ASP.NET oder AS400 in Zorn verwendet, aber ich habe diese Art von Verhalten gesehen und es in der Regel eine Art von Netzwerk-Problem angegeben, in der Regel einen Reverse-DNS-Lookup, das aus ist das Timing.

Angenommen, Sie haben Ping durch die Firewall aktiviert ist, überprüfen Sie, dass Sie in beide Richtungen anpingen kann.

Auch läuft trace von jeder Maschine, um zu versuchen und zu diagnostizieren, wo eine Verzögerung sein könnte.

Ich hoffe, das hilft.

Andere Tipps

Es tut uns Leid, aber ich kann Ihnen nicht sagen, was los ist, aber ich habe nur ein paar Kommentare ... Zuerst würde ich Ausgang die SQL, sehen, ob es eine Menge verbindet und / oder eine Tabelle (Datei) mit einer großen Menge von Datensätzen zu treffen. Wenn Sie wirklich in Feuer Ihre Profiler der Wahl graben wollen (ich benutze Ants Profiler) und versuchen, einen Profiler für die 400 zu finden - sehen, was die Server-Ressourcen sowie aktuelle Abfrage sind, nachdem es durch den ODBC-Treiber geht

Ich habe mit asp.net und AS400 ein paar Mal gearbeitet und die Art, wie ich am erfolgreichsten gewesen ist eigentlich SQL Server mit einem Verbindungsserver zu AS400 verwenden. Ich habe eine Ansicht, um es einfacher, mit zu arbeiten - den Merkwürdigkeiten von AS400 Namensgebung versteckt. Es funktionierte gut in meinem Szenario, da die Anwendung benötigte sowieso Informationen von SQL Server zu ziehen.

Ich dachte, ich es für den Fall zu erwähnen wäre es ... viel Glück hilft

Überprüfen Sie die Größe Ihres iSeries-System. Je nach Größe der Abfrage und wenn das System für die Anwendungen zu klein ist, die darauf ausgeführt werden, diese Zeit in Anspruch nehmen kann. Es ist zwar nicht als posibility geworfen werden soll, ich habe ein ähnliches Verhalten in der Vergangenheit gesehen. Aber natürlich wahrscheinlicher ist ein Netzwerkproblem.

Die andere Idee, wenn Sie können die Geschwindigkeit Problem lösen oder ein Sizing Problem, das es in einem MS SQL Server zu speichern, dann schreibt die Datensätze von SQL Server auf die iSeries von dort aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top