azubal | 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. Voici un apercu apres un reboot :
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 :
- int32 = "4294967296"
- fileName = "temp.dat"
- ' 5 minutes pour du 100Mbps
- init
- sub init()
- strComputer = "."
- Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2" )
- Set objNet = objWMI.InstancesOf("Win32_PerfRawData_Tcpip_NetworkInterface" )
- received = "0"
- sent = "0"
- ' fait le total dans dans le cas de plusieurs interfaces
- For Each obj In objNet
- received = received + obj.BytesReceivedPersec
- sent = sent + obj.BytesSentPersec
- next
- ' resoud un probleme de cast
- if (sent < 0) then
- sent = sent + int32
- end if
- if (received < 0) then
- received = received + int32
- end if
- ' cree le fichier qui contient les infos.
- set fso = Wscript.CreateObject("Scripting.FileSystemObject" )
-
- ' si le fichier n'existe pas... On le crée.
- if not fso.FileExists(fileName) then
- writef fso, fileName, sent, received, sent, received
- end if
- readf fso, fileName, sent, received
- end sub
- Sub readf(fs, file, sent, received)
- ' Read the contents of the file.
- Set ts = fs.OpenTextFile(file, 1)
- ltrafficSent = ts.ReadLine
- ltrafficReceived = ts.ReadLine
- ltotaltrafficSent = ts.ReadLine
- ltotaltrafficReceived = ts.ReadLine
- ts.Close
-
- if sent < (ltrafficSent + 0) then
- ltotaltrafficSent = ltotaltrafficSent + (sent + (int32 - ltrafficSent))
- else
- ltotaltrafficSent = ltotaltrafficSent + (sent - ltrafficSent)
- end if
- if received < (ltrafficReceived + 0) then
- ltotaltrafficReceived = ltotaltrafficReceived + (received + (int32 - ltrafficReceived))
- else
- ltotaltrafficReceived = ltotaltrafficReceived + (received - ltrafficReceived)
- end if
- writef fs, file, sent, received, ltotaltrafficSent, ltotaltrafficReceived
-
- ' affiche le resultat
- WScript.Echo ltotaltrafficSent & " " & ltotaltrafficReceived
- End Sub
- sub writef(fs, file, trafficSent, trafficReceived, totalTrafficSent, totalTrafficReceived)
- set f1 = fs.CreateTextFile(file, True)
- f1.WriteLine(trafficSent) ' valeur compteur precedent
- f1.WriteLine(trafficReceived) ' valeur compteur precedent
- f1.WriteLine(totalTrafficSent) ' valeur compteur total precedent
- f1.WriteLine(totalTrafficReceived) ' valeur compteur total precedent
- f1.Close
- end sub
|
Je ne comprends pas tellement d'ou peut venir le probleme |