Pergunta

Eu tenho um aplicativo que irá residir dentro de uma rede business2business que irá se comunicar com o nosso AS400 em nosso ambiente de rede interna. O firewall está configurado para permitir que solicitar os dados através de nosso AS400, mas estamos vendo um enorme tempo de atraso na velocidade de conexão e tempo de resposta. Por exemplo, o que leva menos de meio segundo em nossos ambientes de desenvolvimento local está tomando para cima de 120 segundos em nosso ambiente B2B.

Esta é a função que estamos utilizando para obter os nossos dados. Estamos usando os blocos de aplicação da biblioteca da empresa, de modo que o objeto ASI é o banco de dados ...

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

Eu estou tentando debater algumas idéias para considerar por que isso está ocorrendo.

Foi útil?

Solução

nunca usaram ASP.NET ou AS400 com raiva, mas eu vi este tipo de comportamento antes e, geralmente, indicado algum tipo de problema de rede, tipicamente uma pesquisa reversa de DNS que é o tempo limite.

Supondo que você tenha de ping permitido através de seu firewall, verifique se você pode executar ping em ambas as direções.

Também executar traceroute de cada máquina para tentar diagnosticar em que um atraso poderia ser.

Espero que ajude.

Outras dicas

Desculpe, mas eu não posso te dizer o que está acontecendo, mas eu só tenho comentários a par ... Em primeiro lugar gostaria de saída do sql, ver se ele tem um monte de junta e / ou está atingindo uma tabela (arquivo) com uma grande quantidade de registros. Se você realmente quiser se aprofundar no fogo o seu profiler de escolha (eu uso Formigas Profiler) e tentar encontrar um profiler para o 400 - veja o que os recursos do servidor são, bem como consulta real após ele vai através do driver ODBC

Eu tenho trabalhado com asp.net e as400 algumas vezes e a forma como eu ter sido mais bem sucedido está realmente usando o SQL Server com um servidor ligado ao AS400. Eu criei a fim de torná-lo mais simples para trabalhar com - escondendo as esquisitices de nomeação as400. Funcionou bem no meu cenário porque o aplicativo necessário para extrair informações do servidor SQL de qualquer maneira.

Eu pensei que eu iria falar isso no caso de ajuda ... boa sorte

Verifique o tamanho do seu sistema iSeries também. Dependendo do tamanho da consulta e se o sistema está subdimensionada para os aplicativos em execução no-lo, isso pode levar algum tempo. Enquanto ele não deve ser jogado fora como um potencial comprador, eu vi um comportamento semelhante no passado. Mas é claro que o mais provável é um problema de rede.

A outra idéia se você pode resolver a questão de velocidade ou é um problema de dimensionamento é armazená-lo em um MS SQL Server, em seguida, escrever os registros do SQL Server para o iSeries a partir daí.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top