2009-03-03 6 views
4

Ich habe eine Anwendung, die in einem Business2business-Netzwerk residieren wird, das mit unserem AS400 in unserer internen Netzwerkumgebung kommunizieren wird. Die Firewall wurde so konfiguriert, dass die Datenanforderung an unseren AS400 gesendet werden kann, aber wir sehen eine große Zeitverzögerung bei Verbindungsgeschwindigkeit und Reaktionszeit. Zum Beispiel dauert das, was in unseren lokalen Entwicklungsumgebungen weniger als eine halbe Sekunde dauert, in unserer B2B-Umgebung 120 Sekunden.AS400 Datenverbindung in ASP.NET

Dies ist die Funktion, die wir verwenden, um unsere Daten zu erhalten. Wir nutzen die Enterprise Library Applikationsbausteine, so dass das ASI-Objekt 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 einige Ideen zu sammeln versuchen, warum zu prüfen, wie zu diesem geschieht.

+0

+1 Ich würde gerne wissen, was vor sich geht. –

Antwort

2

nie ASP.NET oder AS400 in Zorn verwendet haben, aber ich habe diese Art von Verhalten gesehen und angegeben, in der Regel eine Art eines Netzwerkproblems, typischerweise eine umgekehrte DNS-Suche, die das Zeitlimit überschreitet.

Angenommen, Sie haben Ping über Ihre Firewall aktiviert, überprüfen Sie, ob Sie in beide Richtungen pingen können.

Führen Sie auch traceroute von jeder Maschine aus, um zu versuchen, zu diagnostizieren, wo eine Verzögerung liegen könnte.

Hoffnung, das hilft.

+0

@brindy - Danke! Ich werde morgen weitermachen. – RSolberg

1

Sorry, aber ich kann Ihnen nicht sagen, was los ist, aber ich habe nur ein paar Kommentare ... Zuerst würde ich die SQL ausgeben, sehen, ob es viele Joins hat und/oder einen Tisch trifft (Datei) mit einer großen Anzahl von Datensätzen. Wenn Sie wirklich Ihren Profiler der Wahl eingraben wollen (ich benutze Ants Profiler) und versuchen, einen Profiler für die 400 zu finden - sehen Sie, was die Server-Ressourcen sowie tatsächliche 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 war, ist tatsächlich sql Server mit einem Verbindungsserver zu AS400. Ich habe eine Ansicht erstellt, um die Arbeit mit den Kuriositäten der as400-Benennung zu vereinfachen. Es funktionierte gut in meinem Szenario, weil die Anwendung sowieso Informationen von SQL Server abrufen musste.

ich dachte ich, es im Falle zu erwähnen wäre es hilft ... viel Glück

+0

Die Auswahlmöglichkeiten sind wie folgt: Wählen Sie a, b, c wobei x = y ... Nichts besonderes. Sehr geschätzt. – RSolberg

0

Überprüfen Sie auch die Größe Ihres iSeries-Systems. Abhängig von der Größe der Abfrage und wenn das System für die darauf ausgeführten Anwendungen unterdimensioniert ist, kann dies einige Zeit dauern. Obwohl es nicht als eine Möglichkeit ausgeschlossen werden sollte, habe ich in der Vergangenheit ein ähnliches Verhalten gesehen. Aber natürlich ist ein Netzwerkproblem eher.

Die andere Idee, wenn Sie das Geschwindigkeitsproblem lösen können oder ein Dimensionierungsproblem ist, ist es in einem MS SQL Server zu speichern, dann schreiben Sie die Datensätze von SQL Server auf die iSeries von dort.

Verwandte Themen