Environment.WorkingSet renvoie le jeu de travail incorrect pour mon application asp.net qui est la seule application de son pool d'applications.Environnement.WorkingSet bug
Sur un serveur Windows 2003 SP2 avec 3 Go de RAM qui est une machine virtuelle VMWare , il signale le jeu de travail comme 2.047.468.061 octets (1952MBs) et la valeur Process.WorkingSet est 75.563.008 octets (72MBs).
• Mémoire des valeurs d'état renvoyées par GlobalMemoryStatusEx:
AvailExtendedVirtual : 0
AvailPageFile: 4.674.134.016
AvailPhys: 2.140.078.080
AvailVirtual: 1.347.272.704
TotalPageFile: 6.319.915.008
TotalPhys: 3.245.568.000
TotalVirtual: 2.147.352.576
• GetProcessMemoryInfo()
Working Set : 55.140.352
Peak Working Set: 75.571.200
PageFile : 94.560.256
QuotaPagedPoolUsage : 376.012
QuotaNonPagedPoolUsage : 33.261
• GetProcessWorkingSetSize() - min: 204,800 - max: 1.413.120
• GetPerformanceInfo()
CommitLimit : 1.542.948 pages 6.319.915.008 bytes
CommitPeak : 484.677 pages 1.985.236.992 bytes
CommitTotal : 417.514 pages 1.710.137.344 bytes
HandleCount : 57.012
KernelNonpaged : 8.671 pages 35.516.416 bytes
KernelPaged : 27.302 pages 111.828.992 bytes
KernelTotal : 35.973 pages 147.345.408 bytes
PageSize : 4.096 bytes
PhysicalAvailable : 508.083 pages 2.081.107.968 bytes
PhysicalTotal : 792.375 pages 3.245.568.000 bytes
ProcessCount : 43
SystemCache : 263.734 pages 1.080.254.464 bytes
ThreadCount : 1.038
Après loding le nouveau patch, http://support.microsoft.com/kb/983583/en-us, version .NET change à 2.0.50727.3615 et Environment.WorkingSet retourne maintenant la valeur:. 2.047.468.141 (qui est de 80 octets plus grand que précédent)
Sur une machine Vista avec 3 Go de RAM, les valeurs Environment.WorkingSet et Process.WorkingSet sont similaires et se situent autour de 37 Mo. Par conséquent, pourquoi Environment.WorkingSet renvoie une valeur fixe?
Redémarrer le pool d'applications ne change rien, il renvoie toujours la même valeur magique, 2.047.468.061. J'ai également installé une application .NET 1.1.4322.2443, et étrangement WorkingSet est renvoyé un nombre à partir d'un ensemble aléatoire de nombres indépendants (193.654.824, 214.101.416, 57.207.080, 287.635.496) chaque fois La page est actualisée alors que GetProcessMemoryInfo() renvoie le nombre attendu.
J'ai également constaté que lorsque l'application exécutée en usurpant l'identité de "NT AUTHORITY \ NetworkService" ce problème ne se produit pas, Environment.WorkingSet renvoie le nombre attendu .NET v1.1 et v2.0.
J'ai vérifié CodeAccessPermissions comme EnvironmentPermission pour l'utilisateur windows et NetworkService mais je n'ai trouvé rien qui limite la lecture de la valeur WorkingSet.
Alors, qu'est-ce qui pourrait causer cela? Est-ce un bug, une configuration incorrecte ou un fichier corrompu, etc.?
Pourquoi continuez-vous à poser les mêmes questions? http://stackoverflow.com/questions/3378874/environment-workingset-incorrectly-reports-memory-usage Et un autre, qui a probablement (et à juste titre) été fermé. – fletcher
http://social.msdn.microsoft.com/Forums/fr/clr/thread/b8a50266-a34d-4a6d-8fc1-08c8fafbc78b – Will
fletcher; pas exactement la même question, j'ai modifié avec de nouvelles conclusions. – lockedscope