Question

J'ai une application qui résidera dans un réseau business2business qui communiquera avec notre AS400 dans notre environnement réseau interne. Le pare-feu a été configuré pour permettre la demande de données à notre AS400, mais nous observons un retard considérable en termes de vitesse de connexion et de temps de réponse. Par exemple, ce qui prend moins d’une demi-seconde dans nos environnements de développement locaux prend plus de 120 secondes dans notre environnement B2B.

C’est la fonction que nous utilisons pour obtenir nos données. Nous utilisons les blocs d’application de la bibliothèque d’entreprise, l’objet ASI est donc la base de données ...

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

J'essaie de trouver des idées sur ce qui se passe.

Était-ce utile?

La solution

Je n’ai jamais utilisé ASP.NET ou AS400 en colère, mais j’avais déjà eu ce genre de comportement auparavant et cela indiquait généralement un problème de réseau, généralement une recherche DNS inversée qui aboutissait à un dépassement de délai.

En supposant que le ping soit activé via votre pare-feu, vérifiez que vous pouvez effectuer un ping dans les deux sens.

Exécutez également traceroute à partir de chaque ordinateur pour essayer de diagnostiquer le retard éventuel.

L’espoir que cela aide.

Autres conseils

Désolé mais je ne peux pas vous dire ce qui se passe mais je n'ai que quelques commentaires ... D'abord, je voudrais sortir le SQL, voir s'il a beaucoup de jointures et / ou frappe une table (fichier) avec une grande quantité d'enregistrements. Si vous voulez vraiment approfondir votre profileur de choix (j'utilise Ants Profiler) et essayer de trouver un profileur pour le 400 - voyez quelles sont les ressources du serveur ainsi que la requête après son passage dans le pilote odbc.

J’ai travaillé avec asp.net et as400 à quelques reprises et j’ai eu le plus de succès avec l’utilisation de SQL Server avec un serveur lié à AS400. J'ai créé une vue pour simplifier le travail - masquant les bizarreries de la dénomination as400. Cela fonctionnait bien dans mon scénario car l'application devait extraire des informations du serveur SQL de toute façon.

Je pensais le mentionner au cas où cela aiderait ... bonne chance

Vérifiez également la taille de votre système iSeries. Selon la taille de la requête et si le système est trop petit pour les applications qui y sont exécutées, cela peut prendre du temps. Bien que cela ne devrait pas être considéré comme une possibilité, j'ai déjà observé un comportement similaire dans le passé. Mais, bien entendu, le problème est probablement lié au réseau.

L’autre idée si vous pouvez résoudre le problème de vitesse ou si vous rencontrez un problème de dimensionnement est de le stocker dans un serveur MS SQL puis d’écrire les enregistrements de SQL Server sur l’iSeries à partir de là.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top