IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[VB.NET] temps d'exécution


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut [VB.NET] temps d'exécution
    Bonjour à tous et à toutes,

    J'ai mis VB dans le titre, mais le problème concerne ASP.NET en général je pense

    Voilà mon problème : j'ai un traitement assez lourd qui fait donc au final planter le serveur. On est en train de modifier les différents timeout (machine.config, web.config, IIS) mais rien y fait. Ce qui m'énerve c'est qu'à chaque fois on atteint jamais les limites : par ex : je mets 3000 partout et au bout de 20 secondes, c'est fini :

    une idée

  2. #2
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Points : 92
    Points
    92
    Par défaut
    Quel est ton traitement? Accès à une BD avec 10 milliars de lignes? Écriture de données dans un répertoire?

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 113
    Points : 118
    Points
    118
    Par défaut
    S'il s'agit d'une requete SQL, il faut augmenter le CommandTimeout de l'obecjt (SQL)Command.

  4. #4
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    y a requete sql avec bcp de lignes, écriture dans un rep, écriture dans des fichiers word

  5. #5
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    voici l'erreur exacte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Expiration du délai d'attente. Le délai d'attente s'est écoulé avant la fin de l'opération ou le serveur ne répond pas. 
    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code. 
     
    Détails de l'exception: System.Data.SqlClient.SqlException: Expiration du délai d'attente. Le délai d'attente s'est écoulé avant la fin de l'opération ou le serveur ne répond pas.
     
    Erreur

  6. #6
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par lucie.houel
    y a requete sql avec bcp de lignes, écriture dans un rep, écriture dans des fichiers word
    pour tes requètes, est-ce que tu utilises un dataset ou un datareader pour récupérer tes données? le datareader fonctionne beaucoup plus rapidement que le dataset qui est vraiment lourd à cause des metadonnées qu'il conserve....

    pour l'écriture dans des répertoires, ca mange énormément de RAM (sur notre serveur de fichier du moins) . Depuis qu'on l'a doublé, ca va mieux!

  7. #7
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par prophetky
    S'il s'agit d'une requete SQL, il faut augmenter le CommandTimeout de l'obecjt (SQL)Command.
    marche pô

    quoi que je change, il stoppe à 30 secondes

  8. #8
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par crimsonPhantom
    Citation Envoyé par lucie.houel
    y a requete sql avec bcp de lignes, écriture dans un rep, écriture dans des fichiers word
    pour tes requètes, est-ce que tu utilises un dataset ou un datareader pour récupérer tes données? le datareader fonctionne beaucoup plus rapidement que le dataset qui est vraiment lourd à cause des metadonnées qu'il conserve....

    pour l'écriture dans des répertoires, ca mange énormément de RAM (sur notre serveur de fichier du moins) . Depuis qu'on l'a doublé, ca va mieux!
    c'est des reader

    nan mais en fait je me doute que la lenteur vient des fichiers, mais j'aimerais comprendre pkoi l'appli plante à 30 secondes, alors qu'on a l'impression d'avoir changer tous les timeouts :

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 94
    Points : 67
    Points
    67
    Par défaut
    Tu vas devoir lancer des threads differents en séparant la lecture des données de la création des fichiers sur ton serveur en utilisant une pile partagée ou autres pour le partage des données

  10. #10
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    ça aussi j'ai essayé : lancer dans un thread différent et ça n'a rien donné, j'ai toujours la même erreur

    mais en fait j'aimerais comprendre quel timeout je dois changer pour que l'application continue de ramer au-delà de 30 secondes (je sais que c'est con, mais je voudrais comprendre )

  11. #11
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 113
    Points : 118
    Points
    118
    Par défaut
    as tu essayer d'augmenter le timeout que je t'ai mis plus haut.
    Et n'oublie pas de fermer la connexion à SQL Server des que ton traitement SQL est fini, car ca bouffe des resources et un timeout pour rien.

  12. #12
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    oui, oui, regarde je te l'ai mis plus haut que j'avais essayé

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    C'est une ou plusieurs requetes sql que tu fais ? Avec des transactions ? Si oui il est possible que tu ais un dead lock qque part.

  14. #14
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    Salut sphax

    C'est plusieurs requetes mais sans transaction.

    Mais on aurait plutôt l'impression que le problème vient de IIS, du machnie.config ou du web.config, plutôt que de SQL SERVER, car quand je lance mes requetes à la main dans l'analyseur de requete, elles mettent le temps, mais elles arrivent jusqu'au bout.

  15. #15
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    par exemple, on a essayé de modifier ça dans le machine.config :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <httpRuntime executionTimeout="90" maxRequestLength="4096" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" enableVersionHeader="true"/>
    on a mis par exemple 300 au lieu de 90 dans executionTimeout, mais de toutes façons l'appli plante à 30 sec

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Chuis qu'un mal poli, hello lucie !

    on a mis par exemple 300 au lieu de 90 dans executionTimeout
    La tu changes le temps d'execution de la page or toi tu as un probleme de timeout de sqlserver. soit c'est la connexion qui prend du temps (ça voudrait dire que le pool de connexion est vide et que qque part tu aurais oublié de fermer des connexions, verifie on sait jamais) soit que c'est l'exécution de la requete qui prend du temps.

    Vu que t'as essayé de changer le CommandTimeout sans succés (t'as bien essayé avec un grand chiffre fantaisiste genre 10000 ?), il est aussi possible que tu ais oublié de "comitter" une transaction précédente. Tu n'as aucune transaction dans ton code nulle part (même ailleurs que sur le code concernant directement la requete dont on parle) ?

  17. #17
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par Sphax
    or toi tu as un probleme de timeout de sqlserver.
    comment tu sais que c'est ça ?

    Citation Envoyé par Sphax
    Vu que t'as essayé de changer le CommandTimeout sans succés (t'as bien essayé avec un grand chiffre fantaisiste genre 10000 ?)
    j'ai essayé 300

    Citation Envoyé par Sphax
    , il est aussi possible que tu ais oublié de "comitter" une transaction précédente. Tu n'as aucune transaction dans ton code nulle part (même ailleurs que sur le code concernant directement la requete dont on parle) ?
    bah qd je lance ma requete à la mano (dans l'analyseur de requetes) je le verrais si c'était ça, nan ?

    Est-ce que ça pourrait pas venir du IIS xp qui est un peu m....dique ou du fait que ma base n'est pas en local ?

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    comment tu sais que c'est ça ?
    Ton exception c'est bien System.Data.SqlClient.SqlException , ce qui est assez clair . Un timeout de la page aurait été clair également.

    j'ai essayé 300
    Oui j'imagine que c'est assez, ça fait 5 minutes. Si sous l'analyseur de requete l'execution dure moins de 5 minutes c'est ok.

    bah qd je lance ma requete à la mano (dans l'analyseur de requetes) je le verrais si c'était ça, nan ?
    Ben justement si ta requete fonctionne sous l'analyseur de requete c'est a priori que le probleme vient d'ailleurs. En particulier une requete/transaction que tu lancerais avant la requete qui nous intéresse dans ton code. Mais c'est juste une idée, peut etre que ton code n'exécute aucune autre requete avant (?)

    Est-ce que ça pourrait pas venir du IIS xp qui est un peu m....dique ou du fait que ma base n'est pas en local ?
    Je ne sais pas, pt'etre ben qu'oui, pt'etre ben qu'non

    Autre différence entre l'analyseur de requete et ton code c'est la chaine de connexion, est ce que le tienne est bien valide, tu arrives a executer d'autres requetes depuis ton code avec cette chaine de connexion sans probleme ?

  19. #19
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par Sphax
    Ben justement si ta requete fonctionne sous l'analyseur de requete c'est a priori que le probleme vient d'ailleurs. En particulier une requete/transaction que tu lancerais avant la requete qui nous intéresse dans ton code. Mais c'est juste une idée, peut etre que ton code n'exécute aucune autre requete avant (?)
    nan je crois pas en plus tout se passe bien si j'ai un petit volume de données (genre 5 personnes à traiter), c'est si le volume de données augmente que ça m..... (genre 300 personnes). Donc si c'était une transaction pas fermée, ça m.... même avec 5 personnes, nan ?

    Citation Envoyé par Sphax
    Autre différence entre l'analyseur de requete et ton code c'est la chaine de connexion, est ce que le tienne est bien valide, tu arrives a executer d'autres requetes depuis ton code avec cette chaine de connexion sans probleme ?
    bah ouais sans problème

  20. #20
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Oui effectivement une transaction non fermée bloquerait ta requete meme pour 5 personnes je pense.

    Je t'avoue que je seche un peu là. Une question qd même : qd tu mets 300 comme timeout de la commande, ton exception est lévée au bout de combien de temps ? Et c'est toujours la même exception ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [C#] Calcul du temps d'exécution.
    Par lozzko dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/06/2005, 16h12
  2. [VB.NET] Temps d'éxécution d'une page...
    Par Webman dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/06/2004, 12h20
  3. Réponses: 2
    Dernier message: 25/05/2004, 15h33
  4. Affichage du temps d'exécution d'une requête
    Par milka dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 17h48
  5. Temps d'exécution des instructions FPU
    Par ubi dans le forum Assembleur
    Réponses: 2
    Dernier message: 24/10/2003, 18h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo