2009-03-03 56 views
4

我有一個應用程序駐留在將在我們的內部網絡環境中與我們的AS400進行通信的business2business網絡中。防火牆已配置爲允許通過我們的AS400發送數據請求,但是我們發現連接速度和響應時間存在巨大滯後時間。例如,在我們的本地開發環境中,花費不到半秒的時間就會在我們的B2B環境中花費120秒以上。ASP.NET中的AS400數據連接

這是我們用來獲取數據的函數。我們正在使用的企業庫應用程序塊,所以ASI對象是數據庫...

/// <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; 
} 

我想集思廣益一些想法來考慮,爲什麼這正在發生。

+0

+1我肯定想知道發生了什麼。 – 2009-03-03 18:14:38

回答

2

未用過的憤怒ASP.NET或AS400我會提到它的情況下,但我已經看到這種行爲之前,它通常表示某種的網絡問題,通常是反向DNS查詢超時。

假設您通過防火牆啓用了ping,請檢查您是否可以在兩個方向上ping。

也從每臺機器運行traceroute來嘗試和診斷延遲可能在哪裏。

希望有所幫助。

+0

@brindy - 謝謝!我明天就會明白。 – RSolberg 2009-03-04 02:06:07

1

對不起,但我不能告訴你發生了什麼,但我只是有幾個意見... 首先,我會輸出sql,看看它是否有很多連接和/或正在打一個表文件)與大量的記錄。如果你真的想挖掘你選擇的分析器(我使用螞蟻探查器),並嘗試找到400的探查器 - 看看它通過odbc驅動程序後的服務器資源以及實際查詢。

我已經與asp.net和as400一起工作過幾次,而且我最成功的方式實際上是使用帶有鏈接服務器的SQL Server到AS400。我創建了一個視圖,使其更容易處理 - 隱藏了as400命名的怪癖。它在我的場景中運行良好,因爲應用程序無論如何都需要從sql server獲取信息。

我認爲它可以幫助...好運

+0

選擇是這樣的:select a,b,c其中x = y ...沒什麼特別的。非常讚賞。 – RSolberg 2009-03-04 02:06:38

0

檢查iSeries系統的大小。根據查詢的大小,如果系統運行的應用程序尺寸過小,這可能需要一些時間。雖然它不應該作爲一種可能性被拋棄,但我在過去也看到過類似的行爲。但當然更可能是一個網絡問題。

另一個想法,如果你可以解決速度問題或是一個大小問題,就是將它存儲在MS SQL Server中,然後將記錄從SQL Server寫入iSeries。