Je suis confronté à des timeouts mssql relativement fréquents entre le serveur
web et le serveur de données (ms-sql 2000). Il s'agit d'une application actuellement
en production.
J'ai effectué un audit de mon code en vérifiant qu'il n'y avait pas un oubli dans
le genre connexion.close ou datareader.close, rien ne m'a sauté aux yeux.
J'envisage de placer des balises de surveillance à certains endroits clés de mon
code afin d'obtenir des informations temps-réel sur les connexions ouvertes,
requêtes et appels en attente, datareaders ouverts, etc.
Avez-vous déjà été confronté à une telle situation ? Auriez-vous des conseils
pour me permettre d'identifier la source du problème ? Existe-il des 'best
practices' dans ce domaine ? (pour info, le site est hébergé en mutualisé, je
n'ai accès à la console de la machine mais je peux accéder au serveur via
query analyzer ou entreprise manager si nécessaire)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Guillaume Davion
Regardes peut-être au niveau de tes requêtes sql, il est possible que deux d'entre elles entrent en inter-blocage, genre une requete 1 qui tente un select sur une table qui est lockée par une requête 2, et que cette requête 2 attende que se libère le lock posé par la requête 1. D'où blocage, d'où timeout.
Regardes peut-être au niveau de tes requêtes sql, il est possible que
deux d'entre elles entrent en inter-blocage, genre une requete 1 qui
tente un select sur une table qui est lockée par une requête 2, et
que cette requête 2 attende que se libère le lock posé par la
requête 1. D'où blocage, d'où timeout.
Regardes peut-être au niveau de tes requêtes sql, il est possible que deux d'entre elles entrent en inter-blocage, genre une requete 1 qui tente un select sur une table qui est lockée par une requête 2, et que cette requête 2 attende que se libère le lock posé par la requête 1. D'où blocage, d'où timeout.
Messenger of the red snake mountain
>Regardes peut-être au niveau de tes requêtes sql, il est possible que deux d'entre elles entrent en inter-blocage, genre une requete 1 qui tente un select sur une table qui est lockée par une requête 2, et que cette requête 2 attende que se libère le lock posé par la requête 1. D'où blocage, d'où timeout.
Les verrous... argh ! J'ai regardé au niveau de la trace et je n'ai qu'une série de SELECT, et un unique UPDATE entre cette série de SELECT.
Je n'avais jamais pensé qu'un verrou pouvait se produire dans cette situation.
Si tel est le cas, quels sont les outils à disposition du développeur pour clairement identifier ce verrou ? Peut on savoir via une requête sql par exemple quelles requêtes seraient en attente ou quelque chose du genre ?
Ce qui est étonnant c'est que cette séquence est répétée environ 1'000 fois par jour et se produit à intervalles irréguliers, entre 10 minutes et 1 heure en moyenne...
En tous cas. merci pour votre réponse, cela me rebranche sur une direction que je croyais non applicable dans ce cas.
Antonio
>Regardes peut-être au niveau de tes requêtes sql, il est possible que
deux d'entre elles entrent en inter-blocage, genre une requete 1 qui
tente un select sur une table qui est lockée par une requête 2, et
que cette requête 2 attende que se libère le lock posé par la
requête 1. D'où blocage, d'où timeout.
Les verrous... argh ! J'ai regardé au niveau de la trace et je n'ai qu'une
série de SELECT, et un unique UPDATE entre cette série de SELECT.
Je n'avais jamais pensé qu'un verrou pouvait se produire dans cette situation.
Si tel est le cas, quels sont les outils à disposition du développeur pour
clairement identifier ce verrou ? Peut on savoir via une requête sql par
exemple quelles requêtes seraient en attente ou quelque chose du genre ?
Ce qui est étonnant c'est que cette séquence est répétée environ 1'000
fois par jour et se produit à intervalles irréguliers, entre 10 minutes et 1 heure
en moyenne...
En tous cas. merci pour votre réponse, cela me rebranche sur une direction
que je croyais non applicable dans ce cas.
>Regardes peut-être au niveau de tes requêtes sql, il est possible que deux d'entre elles entrent en inter-blocage, genre une requete 1 qui tente un select sur une table qui est lockée par une requête 2, et que cette requête 2 attende que se libère le lock posé par la requête 1. D'où blocage, d'où timeout.
Les verrous... argh ! J'ai regardé au niveau de la trace et je n'ai qu'une série de SELECT, et un unique UPDATE entre cette série de SELECT.
Je n'avais jamais pensé qu'un verrou pouvait se produire dans cette situation.
Si tel est le cas, quels sont les outils à disposition du développeur pour clairement identifier ce verrou ? Peut on savoir via une requête sql par exemple quelles requêtes seraient en attente ou quelque chose du genre ?
Ce qui est étonnant c'est que cette séquence est répétée environ 1'000 fois par jour et se produit à intervalles irréguliers, entre 10 minutes et 1 heure en moyenne...
En tous cas. merci pour votre réponse, cela me rebranche sur une direction que je croyais non applicable dans ce cas.