[VBS] Fuite memoire ?

Fuite memoire ? [VBS] - VB/VBA/VBS - Programmation

Marsh Posté le 07-08-2006 à 21:01:05    

Bonjour,
j'ai ecrit un petit script vbs que je schedule sur un serveur toutes les 5 minutes. Au bout de quelques jours, j'ai constaté une augmentation significative de la memoire utilisé et apres investigations, il semblerait que ce soit le script qui grignote petit a petit ma RAM.  :heink:  
 
Voici un apercu apres un reboot :
http://pix.nofrag.com/0e/90/05fad26c031daacfdddf18ac2709.jpeg
 
 
Ce qui me parait mysterieux, c'est qu'avec VBS il n'y a pas de gestion de la memoire.
 
 
voici le script en question :  
il s'agit d'un script qui releve le traffic total entrant et sortant d'une machine et fait des traitements dessus afin de pouvoir donner le vrai traffic entrant et sortant sans limites (car le systeme stocke les valeurs sur 32 bits ce qui provoque un retour a 0 des compteurs tous les 4Go de traffic).
 

Code :
  1. int32 = "4294967296"
  2. fileName = "temp.dat"
  3. ' 5 minutes pour du 100Mbps
  4. init
  5. sub init()
  6.         strComputer = "."
  7.         Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2" )
  8.         Set objNet = objWMI.InstancesOf("Win32_PerfRawData_Tcpip_NetworkInterface" )
  9.         received = "0"
  10.         sent = "0"
  11.         ' fait le total dans dans le cas de plusieurs interfaces
  12.         For Each obj In objNet
  13.                 received = received + obj.BytesReceivedPersec
  14.                 sent = sent + obj.BytesSentPersec
  15.         next
  16.         ' resoud un probleme de cast
  17.         if (sent < 0) then
  18.                  sent = sent + int32
  19.         end if
  20.         if (received < 0) then
  21.                  received = received + int32
  22.         end if
  23.         ' cree le fichier qui contient les infos.
  24.         set fso = Wscript.CreateObject("Scripting.FileSystemObject" )
  25.        
  26.         ' si le fichier n'existe pas... On le crée.
  27.         if not fso.FileExists(fileName) then
  28.                 writef fso, fileName, sent, received, sent, received
  29.         end if
  30.         readf fso, fileName, sent, received
  31. end sub
  32. Sub readf(fs, file, sent, received)
  33.         ' Read the contents of the file.
  34.         Set ts = fs.OpenTextFile(file, 1)
  35.         ltrafficSent          = ts.ReadLine
  36.         ltrafficReceived      = ts.ReadLine
  37.         ltotaltrafficSent     = ts.ReadLine
  38.         ltotaltrafficReceived = ts.ReadLine
  39.         ts.Close
  40.      
  41.         if sent < (ltrafficSent + 0) then
  42.                 ltotaltrafficSent = ltotaltrafficSent + (sent + (int32 - ltrafficSent))
  43.         else
  44.                 ltotaltrafficSent = ltotaltrafficSent + (sent - ltrafficSent)
  45.         end if
  46.         if received < (ltrafficReceived + 0) then
  47.                 ltotaltrafficReceived = ltotaltrafficReceived + (received + (int32 - ltrafficReceived))
  48.         else
  49.                 ltotaltrafficReceived = ltotaltrafficReceived + (received - ltrafficReceived)
  50.         end if
  51.         writef fs, file, sent, received, ltotaltrafficSent, ltotaltrafficReceived
  52.        
  53.         ' affiche le resultat
  54.         WScript.Echo ltotaltrafficSent & " " & ltotaltrafficReceived
  55. End Sub
  56. sub writef(fs, file, trafficSent, trafficReceived, totalTrafficSent, totalTrafficReceived)
  57.         set f1 = fs.CreateTextFile(file, True)
  58.         f1.WriteLine(trafficSent)            ' valeur compteur precedent
  59.         f1.WriteLine(trafficReceived)        ' valeur compteur precedent
  60.         f1.WriteLine(totalTrafficSent)       ' valeur compteur total precedent
  61.         f1.WriteLine(totalTrafficReceived)   ' valeur compteur total precedent
  62.         f1.Close
  63. end sub


 
 
Je ne comprends pas tellement d'ou peut venir le probleme :/

Reply

Marsh Posté le 07-08-2006 à 21:01:05   

Reply

Marsh Posté le 07-08-2006 à 23:43:24    

azubal a écrit :

Bonjour,
j'ai ecrit un petit script vbs que je schedule sur un serveur toutes les 5 minutes.


ben alors c'est pas lui ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed