web-dev-qa-db-fra.com

L'opération d'attente a expiré. ASP

J'ai créé un site web interne pour notre entreprise. Cela a fonctionné sans heurts pendant plusieurs mois et ensuite j'ai fait une mise à jour majeure en raison de la suggestion de l'utilisateur. Quand je cours en live, ça fonctionne normalement. Puis, tout à coup, un de mes utilisateurs du Japon m'a envoyé une "opération d'attente expirée". Erreur. Lorsque je vérifie l’accès à ce lien, il fonctionne normalement pour moi et certains autres à qui je demande de vérifier s’ils accèdent à cette page. J'ai déjà mis à jour httpRuntime executionTimeout mais toujours pas de chance. Est-ce que l'erreur vient de la connexion à la base de données? Si j'augmente le délai dans la connexion à la base de données, le problème sera-t-il résolu? 

12
Vic

Si vous avez trouvé l'erreur exacte "L'opération d'attente a expiré", il est probable que l'appel de la base de données ait pris plus de temps que prévu. Cela pourrait être dû à un certain nombre de choses:

  1. Problème de réseau transitoire
  2. Charge de serveur SQL élevée
  3. Problème avec SAN, RAID ou périphérique de stockage
  4. Blocage ou autre forme de conflit multiprocessus

Vous n'avez pas partagé suffisamment d'informations pour résoudre le problème. Pour ce faire, je rechercherais d’autres occurrences du problème et déterminer s’il existe une tendance, par exemple. si le problème survient à une heure donnée.

Augmenter le délai d’attente n’est certainement pas une mauvaise idée (s’il est actuellement réglé assez bas) et peut résoudre le problème en soi.

11
John Wu

N'oubliez pas d'augmenter le délai de connexion ET le délai de commande:

SqlConnection(@"Data Source=SQLSERVER;Initial Catalog=MYCATALOG;Integrated Security=True;Connection Timeout=1000");//huge timeout

et alors:

com.CommandTimeout = 950;//or whatever
13
Shannon Holsinger

Cela peut aussi être un autre problème. Par exemple, si vous exécutez beaucoup de requêtes au cours d’une connexion ouverte et qu’elles dépassent la durée de vie de la connexion. Ensuite, vous devez définir la propriété Connection Lifetime dans votre chaîne de connexion. Voici la description:

Lorsqu'une connexion est renvoyée au pool, son heure de création est comparé à l'heure actuelle, et la connexion est détruite si cet intervalle de temps (en secondes) dépasse la valeur spécifiée par Connection Durée de vie. Ceci est utile dans les configurations en cluster pour forcer le chargement équilibrage entre un serveur en fonctionnement et un serveur qui vient d'être mis en ligne. UNE La valeur zéro (0) fait que les connexions en pool ont le maximum délai de connection dépassé.

0
OlegI