Surcharge serveur IIS et SQL SERVER

Signaler
Messages postés
3
Date d'inscription
mardi 26 septembre 2006
Statut
Membre
Dernière intervention
27 septembre 2006
-
Messages postés
3
Date d'inscription
mardi 26 septembre 2006
Statut
Membre
Dernière intervention
27 septembre 2006
-
Bonjour,

Nous developpons une application permettant du style déstockage et nous reontrons un problème de surcharge du serveur IIS et SQL server.
Temps utilisation processeur de SQL environ 48% et IIS 45%.

Voici grosso modo l'algo de la page

Pour tous les articles en déstockage

   Afficher info article (utilisation PS)
   Afficher la Qte reserve (utilisation PS)
   Afficher la qte en stock restant (utilisation PS)

Fin Pour

Pour info le nb d'articles présent dans le destockage peuvent atteindre 50 ou 60 articles pour a peu pres 80 utilisateurs lors des reservation.

Je ne sais pas si cela vient d'un problème de configration de IIS ou de SQL SERVER ou si cela vient code (ASP) ou si cela vient du nombre important de requete et de PS que le serveur doit executer.

Merci pour votre aide.

5 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
Bonjour on peut avoir un peu plus de détails ?

Essaye d'executer ce meme code dans une appli winform classique tu pourras déjà infirmer que IIS soit le coupable.

On peut voir un peu le code ?

<hr />Cyril - MVS - MCP
Messages postés
3
Date d'inscription
mardi 26 septembre 2006
Statut
Membre
Dernière intervention
27 septembre 2006

 Voila le code :

'Récupère la liste des sous variete des produits en déstockage


set RRSousVar=server.CreateObject("ADODB.RecordSEt")
sql="exec ListeSousVarietecom " & IdCom & "," & idsousvar
qy1.ActiveConnection=session("cn")
qy1.CommandText=sql
      
rrsousvar.Open qy1.Execute()
      
Do while not rrsousvar.EOF
     
 set RRArtProp=server.CreateObject("ADODB.Recordset")
 set RRartCom2=server.CreateObject("ADODB.Recordset")
 set RRartglob=server.CreateObject("ADODB.Recordset")
 
 'Récupère la liste des produits en déstockage de cette sous variete
   
 qy1.CommandText="exec LstArticlecmd " & idcom & "," & rrsousvar("idsvar")
 qy1.ActiveConnection=session("cn")
 rrartprop.Open qy1.Execute()


 while not rrartprop.EOF


  dim QteRest
  dim QteCmd
  
  'Récupère la quantite reserve pour ce produit par tous les users
  set RRartCom=server.CreateObject("ADODB.Recordset")
       
  qy1.CommandText="exec QtePromoCmd " & IdPropStock & "," & rrartprop("idart")
  qy1.ActiveConnection=session("cn")
  rrartcom.Open qy1.Execute()
     
  if rrartcom("tot")="" or isnull(rrartcom("tot")) then
   qtecmd=0
  else
   qtecmd=clng(rrartcom("tot"))
  end if


  rrartcom.Close


  
  'Calcul la quantité restante


  QteRest=clng(rrartprop("qteachetee"))-qtecmd


  
  'Récupere la quantité réservé par le user
  set RRQteAchete=server.CreateObject("ADODB.recordset")
    
  dim QteAchetee
  QteAchetee=0
    
  if idcom<>-1 then
   qy1.CommandText="exec QteCom " & IdCom & "," & rrartprop("idart")
   qy1.ActiveConnection=session("cn")
   rrqteAchete.Open qy1.Execute()
     
   if not rrqteachete.EOF then
    if not isnull(rrqteachete("tot")) then
     qteAchetee=rrqteachete("tot")
    end if
   end if
   rrqteachete.Close     
  end if
  
  'Affichage / je passe les detail essentiellement HTML : affichage nom produit qte reservé, qte restante, prix etc...
   
  
  rrartprop.MoveNext


 wend


 rrartprop.Close
  
 rrsousvar.MoveNext
 
loop
    
rrsousvar.Close

je vais developper une petite appli qui me simulera ce qui se passe en terme de traitement sur SQL SERVER pour voir comment il se comporte.

Eric
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
ahahaha :) c'est de l'asp 3 qui est TRES vieux maintenant ca fait depuis 2001 que asp.net (son remplacant) est sorti, si tu peux je te conseil de passer sur asp.net.

En tout cas je ne peux pas te conseiller pour du code en asp3.

<hr />Cyril - MVS - MCP
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
2
Salut,

Un truc bizarre : tu crées deux RecordSet dans ta boucle while (RRArtCcom2 et RRAartGlob) qui ne servent jamais plus tard.
Un autre petit truc : n'oublies pas, dès que tu as finis d'utiliser ton recordset de faire :
Set MonRecordSet = Nothing
pour détruire réellement l'objet (on le fait après le MonRecordSet.Close() le plus souvent), sinon il continu de bouffer des ressources !

Sinon, en effet, la meilleur solution serait de passer à ASP.NET 2

<hr width="100%" size="2" />Nurgle(Antoine)
Messages postés
3
Date d'inscription
mardi 26 septembre 2006
Statut
Membre
Dernière intervention
27 septembre 2006

pour les trucs bizarre en fait je les utilise mais plus dans le code et pour le nothing c pareil


c juste que je n'ai pas mis toute la procédure car ce n'est pas la que cela deconne.


 


Eric