Ralentissement du site

Signaler
Messages postés
12
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
17 avril 2008
-
Messages postés
438
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011
-
Bonjour,

Je travaille actuellement sur un site ASP.net (hebergé par IIS) développé sous Visual Studio 2005 et s'appuyant sur une base My SQL.

Je viens de réaliser une modification sur une dll qu'utilise le site. Et depuis j'ai de gros ralentissement sur le site. Etant novice sur cette technologie , je vous sollicite pour savoir si vous n'auriez pas une idée? Etant donné le peu de modif que j'ai réalisé sur la DLL je pense que c'est plutot une option de publication ou un truc du genre...

D'avance merci

ben

4 réponses

Messages postés
438
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011

bonjour,

quel été ton code à l'origine, quel est le nouveau code modifié ?

donne nous plus de détail, par ce que la ! lol on est pas devin :)

excepter cette dll, tu n'as pas de fait de modif' ailleurs ?
Messages postés
12
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
17 avril 2008

Hello !

Voici le code concerné :

J'ai en fait crée la fonction DeleguePar et modifier la Procedure InfoMailDestinataire. Les modifications apportées sont contenus entre DEBUT MODIF ET FIN MODIF (Trés originale hein ! )
Merci à vous ;)

*********

Protected

Function DeleguePar(
ByVal psAgent
As
String)
As
String

Dim lsRqSql
As
String

Dim loMySqlCmd
As MySqlCommand

Dim loMySqlReader
As MySqlDataReaderlsRqSql =

String.Format(
"SELECT NUM_DELEGATION FROM dwh.sto_delegations WHERE NUM_AGENT = '{0}'", psAgent)
Try   loMySqlCmd New MySqlCommand(lsRqSql, goMysqlConn)   loMySqlReader loMySqlCmd.ExecuteReader()

   Catch ex
As MySqlException

   Throw
New WorkflowException(
"1.DeleguePar: Impossible d'éxécuter la requête Sql dans la base de donnée dwh")

End
Try 

If (loMySqlReader.Read())
Then

   ' Numéro du Délégataire   DeleguePar = loMySqlReader(

"NUM_DELEGATION") &
""

   Else

   ' Si le N+1 n'est pas absent alors on n'envoie pas de mail   DeleguePar =

""

End
IfloMySqlReader.Close()

End
Function

***********************************

Protected
Sub InfoMailDestinataire(
ByVal piEtape
As
Integer,
ByVal psSujet
As
String,
ByVal psMessage
As
String)

Dim lsRqSql
As
String

Dim loMySqlCmd
As MySqlCommand

Dim loMySqlReader
As MySqlDataReader

Dim loMail
As MailMessage

Dim losmtp
As SmtpClient

Dim lsNumDestinataire
As
String

Dim lsTpEmetteur
As
String

Dim lsTpDestinataire
As
String

Dim lsSvEmetteur
As
String

Dim lsSvDestinataire
As
String

Dim csAgent
As
String

Dim csAgentN1
As
String

Dim csDelegataire
AsStringcsAgent "agent"csAgentN1

"agent n+1"csDelegataire =

"delegataire"

' ----------------DEBUT MODIF---------------------------

'Sélectionne le type de l'emetteur et du destinatairelsRqSql =

String.Format("SELECT TP_EMETTEUR, TP_DESTINATAIRE, SV_EMETTEUR, SV_DESTINATAIRE, REF_DOC FROM sto_event WHERE ID_ETAPE {0} AND ORDRE {1}", giEtape, giNumOrdre)
Try      loMySqlCmd New MySqlCommand(lsRqSql, goMysqlConn)      loMySqlReader loMySqlCmd.ExecuteReader()

      Catch ex
As MySqlException

      Throw
New WorkflowException(
"1.InfoMailDestinataire : Impossible d'éxécuter la requête Sql")

End
Try

If (loMySqlReader.Read())
Then      lsTpEmetteur = loMySqlReader(

"TP_EMETTEUR") &
""      lsTpDestinataire = loMySqlReader(

"TP_DESTINATAIRE") &
""      lsSvEmetteur = loMySqlReader(

"SV_EMETTEUR") &
""      lsSvDestinataire = loMySqlReader(

"SV_DESTINATAIRE") &
""      loMySqlReader.Close()

      ' Détermine le numéro du destinataire en fonction du Type

      Select
Case LCase(lsTpDestinataire)

      Case csAgent            lsNumDestinataire = ProprietaireDuFlux()

      Case csAgentN1            lsNumDestinataire = AgentN1(ProprietaireDuFlux())

      

Case csDelegataire

            'Vérifie si le N+1 est absent, si oui on récupère son numéro            lsNumDestinataire = DeleguePar(AgentN1(ProprietaireDuFlux()))

 

      Case
Else         lsNumDestinataire =

"" 

End
Select

' -------------------FIN MODIF    ------------------------ 

If lsNumDestinataire <>
""
Then

      'Création de l'instance d'une nouvelle classe MailMessage      loMail =

New MailMessage()

      ' -------------------------------------------

      'Sélectionne l'E-mail du destinataire      lsRqSql =

String.Format(
"SELECT NOM, PRENOM, MAIL FROM dwh.ref_ldap_agent WHERE NUM_AGENT = '{0}';", lsNumDestinataire)
      Try         loMySqlCmd New MySqlCommand(lsRqSql, goMysqlConn)         loMySqlReader loMySqlCmd.ExecuteReader()

         Catch ex
As MySqlException

         Throw
New WorkflowException(
"2.InfoMailDestinataire : Impossible d'éxécuter la requête Sql")

      End
Try

      If (loMySqlReader.Read())
Then

         ' adresse du destinataire         loMail.To.Add(

New MailAddress(loMySqlReader(
"MAIL") &
"", loMySqlReader(
"PRENOM") &
" " & loMySqlReader(
"NOM")       & 
      ""))

      Else

         Throw
New WorkflowException(
String.Format(
"3.InfoMailDestinataire : Impossible de récupèrer l'adresse mail de l'agent {0}",          lsNumDestinataire))

      End
If      loMySqlReader.Close()

      ' -------------------------------------------

      ' -------------------------------------------

      'Sélectionne l'E-mail de l'émetteur      lsRqSql =

String.Format(
"SELECT NOM, PRENOM, MAIL FROM dwh.ref_ldap_agent WHERE NUM_AGENT = '{0}';",    gsAgentConnecter)
      Try         loMySqlCmd New MySqlCommand(lsRqSql, goMysqlConn)         loMySqlReader loMySqlCmd.ExecuteReader()

         Catch ex
As MySqlException

         Throw
New WorkflowException(
"4.InfoMailDestinataire : Impossible d'éxécuter la requête Sql")

        End
Try

         If (loMySqlReader.Read())
Then

               ' adresse de l'expéditeur               loMail.From =

New MailAddress(loMySqlReader(
"MAIL") &
"", loMySqlReader(
"PRENOM") &
" " & loMySqlReader(
"NOM") &
"")

         Else

               Throw
New WorkflowException(
String.Format(
"5.InfoMailDestinataire : Impossible de récupèrer l'adresse mail de l'agent {0}", gsAgentConnecter))

         End
If         loMySqlReader.Close()

         ' -------------------------------------------         loMail.Subject = fsReplaceParamMail(psSujet)

         loMail.Body =

"" & fsReplaceParamMail(psMessage).Replace(Chr(10),
"
") &
"
"         loMail.IsBodyHtml True         loMail.BodyEncoding System.Text.Encoding.GetEncoding(

"iso-8859-1") 

         losmtp =

New System.Net.Mail.SmtpClient(
"localhost")         losmtp.UseDefaultCredentials =

True

         Try            losmtp.Send(loMail)

            Catch exMail
As SmtpFailedRecipientsExceptio

            Throw
New WorkflowException(
String.Format(
"6.InfoMailDestinataire : Impossible d'envoyer le mail à l'adresse suivante : {0} &lt;{1}         &gt;", loMail.To(0).DisplayName, loMail.To(0).Address))

            Catch ex
As SmtpException

            Throw
New WorkflowException(
"7.InfoMailDestinataire : Impossible d'envoyer le mail, La connexion au serveur SMTP a échoué.")

         End
Try

      Else

            'Si lNumDestinataire alors il n'y a pas de Mail à envoyer

      End
If

   Else

         Throw
New WorkflowException(
String.Format(
"9.InfoMailDestinataire : Impossible d'accéder à l'état N°{0} pour l'ordre N°{1}", giEtape - 1, giNumOrdre))

EndIfloMail Nothinglosmtp
NothinglsNumDestinataire NothinglsRqSql
NothingloMySqlCmd NothingloMySqlReader

Nothing

End
Sub

ben
Messages postés
12
Date d'inscription
vendredi 7 juin 2002
Statut
Membre
Dernière intervention
17 avril 2008

Hello

Après plusieurs pistes de recherche voila ce que j'ai trouvé :

Au début j'ai pensé que c'était un response.redirect qui était trop long , car si je fais le redirect sur une url exterieure (google ;) le traitement est instantané.

J'ai donc cherché a savoir pourquoi le serveur mettait autant de temps a faire la redirection.

Lors du chargement de ma page default.aspx le l'utilisation CPU monte en fleche a 100 % (Et redescends a la normale une fois la page chargée! )!!! Et c'est mysql qui utilise toute la ressource.
C'est donc de la que vient le soucis.

Mais qu'est ce qui pourrait solliciter autant le processeur (1Go pourtant) ??? C'est la ou je bloque un peu, si vous avez des pistes ca m'aiderait pas mal....  En oubliant pas qu'avant que je modifie l'appli les traitements n'etait pas aussi long....

Merci d'avance, Sauvez-moi la vie !!

ben
Messages postés
438
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011

Ton code à l'air bon pourtant. quand je travail avec les base de données je préfére travailler avec procédure sotckée, mais bon je ne vois d'erreur. Bizarre.

A ta place j'excuterai ton code en procédure pas à pas afin de voir à quel ligne sa te bouffe toute la ressource de ton pc.