문제

내부 네트워크 환경에서 AS400과 통신 할 Business2Business 네트워크 내에 상주 할 응용 프로그램이 있습니다. 방화벽은 AS400을 통해 데이터 요청을 허용하도록 구성되었지만 속도와 응답 시간에 큰 지연 시간이 있습니다. 예를 들어, 지역 개발 환경에서 1/2 초 미만이 B2B 환경에서 120 초 이상 걸리는 것입니다.

이것은 우리가 데이터를 얻기 위해 사용하는 기능입니다. 엔터프라이즈 라이브러리 애플리케이션 블록을 사용하고 있으므로 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;
}

나는 이것이 왜 발생하는지에 대한 몇 가지 아이디어를 브레인 스토밍하려고 노력하고 있습니다.

도움이 되었습니까?

해결책

분노에 ASP.NET 또는 AS400을 사용한 적이 없지만 이전에는 이런 종류의 동작을 보았으며 일반적으로 일종의 네트워크 문제, 일반적으로 시점이 발생하는 역 DNS 조회를 나타 냈습니다.

방화벽을 통해 핑을 활성화했다고 가정하면 양방향으로 핑을 할 수 있는지 확인하십시오.

또한 각 기계에서 TracerOute를 실행하여 지연이있는 곳을 시도하고 진단하십시오.

도움이되기를 바랍니다.

다른 팁

죄송하지만 무슨 일이 일어나고 있는지 말할 수는 없지만 몇 가지 의견이 있습니다 ... 먼저 SQL을 출력 할 것입니다. 결합이 많거나/또는 큰 사람이있는 테이블 (파일)을 치고 있는지 확인합니다. 기록 금액. 선택한 프로파일 러 (ants profiler)를 사용하고 400에 대한 프로파일 러를 찾으십시오. ODBC 드라이버를 통해 실제 쿼리가 무엇인지 확인하십시오.

ASP.NET 및 AS400과 몇 차례 일했으며 가장 성공한 방식은 실제로 AS400에 연결된 SQL Server를 사용하는 것입니다. AS400 이름 지정의 이상한 점을 숨기는 것이 더 간단하게 작동하도록보기를 만들었습니다. 어쨌든 응용 프로그램이 SQL Server에서 정보를 가져와야했기 때문에 시나리오에서 잘 작동했습니다.

도움이 될 경우를 대비하여 언급 할 것이라고 생각했습니다 ... 행운을 빕니다

Iseries 시스템의 크기도 확인하십시오. 쿼리의 크기에 따라 시스템이 실행중인 애플리케이션에 대해 시스템이 크기가 크면 시간이 걸릴 수 있습니다. 그것은 포도시로 버려서는 안되지만, 나는 과거에 비슷한 행동을 보았습니다. 그러나 물론 네트워크 문제 일 가능성이 높습니다.

속도 문제를 해결할 수 있거나 크기 문제인 경우 다른 아이디어는 MS SQL 서버에 저장 한 다음 SQL Server에서 Iseries로 레코드를 작성하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top