De multiples SQL Simultanées des délais de Connexion En Multithread Service Windows

J'ai un multithread Service Windows j'ai développé avec VS 2010 (.NET 4.0) qui peut varier de quelques dizaines à quelques dizaines de fils, chaque récupération de données à partir d'un serveur lent sur Internet, puis à l'aide d'une base de données locale pour enregistrer ces données (ainsi, le processus de la direction d'Internet, pas de réseau local ou en CPU).

Avec une certaine régularité, je suis une inondation/rafale/rafale de l'erreur suivante à partir de plusieurs threads simultanément:

Système.Les données.SqlClient.SqlException (0x80131904): Délai d'attente expiré. Le délai écoulé avant la fin de l'opération ou le serveur ne répond pas.

La pile d'appel pour cette erreur est généralement:

au Système.Les données.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)

au Système.Les données.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)

au Système.Les données.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)

au Système.Les données.SqlClient.SqlConnection.Open()

Je ne suis pas la spécification d'un Délai d'attente de Connexion dans la chaîne de connexion, et il y a d'autres applications et les processus de travail dans cette base de données. Quelqu'un a rencontré ce genre de comportement, et si oui quel a été fait pour l'empêcher?

Les plus communément appelée méthode dans ma couche d'accès aux données ressemble à ça, et tous mes autres DAL méthodes à suivre la même approche:

using (SqlConnection con = new SqlConnection(GetConnectionString()))
using (SqlCommand cmd = new SqlCommand("AddGdsMonitorLogEntry", con))
{
    cmd.CommandType = CommandType.StoredProcedure;

    /* setting cmd.Parameters [snipped] */

    // We have been getting some timeouts writing to the log; wait a little longer than the default.
    cmd.CommandTimeout *= 4;

    con.Open();

    cmd.ExecuteNonQuery();
}

Merci beaucoup!

MODIFIER

Des commentaires au sujet de ce produit dans le miroir environnements, je doit en effet mentionner que la base de données en question est en miroir. C'est marqué dans SSMS comme "Principal, Synchronisé", à la "Haute sécurité sans basculement automatique (synchrone)" mode.

MODIFIER 5/26/11

Je vois rien dans les journaux de SQL Server pour indiquer tous les problèmes. (Je n'ai pas accès à l'Observateur d'Événements de Windows sur le serveur, mais j'ai demandé à quelqu'un de regarder pour moi.)

  • Je suis aussi de voir exactement le même problème, avec le même stacktrace. La base de données de la connexion est en miroir et la chaîne de connexion spécifie un partenaire de basculement. J'ai été incapable de reproduire le même problème sur mon bureau, l'ouverture d'un tas de connexions et de ne jamais fermer les résultats dans un autre message d'exception.
  • Ces liens signaler un problème similaire, mais aucun n'offre une solution: 1 2 3 4 5
  • Je pense que le problème n'est pas dans le cadre, du client ou de la base de données. Mais dans les requêtes exécutées. Vérifier, par exemple, de recueillir des statistiques ce qui SPs/requêtes soulève une exception le plus souvent
  • Comme une mise à jour pour le problème que j'ai vu, l'ajout d'un Délai d'attente de Connexion=500; à la chaîne de connexion semble prévenir le problème. Ainsi, il semble comme il pourrait vraiment être un problème avec la base de données prend trop de temps à répondre, B=, mais je n'ai vraiment pas envie de quitter le délai d'expiration de haut.
  • alors, quelle est votre résolution définitive de ce problème? Augmenter le délai d'attente (à quoi?) et d'augmenter le pool de connexion?
InformationsquelleAutor ALEXintlsos | 2011-05-04