J'administre un serveur Windows 2008 (enfin, sur Amazon EC2) exécutant IIS et une application Web .NET4. J'ai reçu une alerte mémoire l'autre jour et je suis allé voir, et bien sûr, la mémoire du processus avait augmenté au fil du temps via une sorte de fuite lente. Il n'a pas augmenté de beaucoup, tout comme 60M à 200M, mais il se passait suffisamment d'autres choses avec la boîte pour dépasser notre seuil assez bas (75%) pour déclencher le moniteur.
J'ai recyclé le pool de l'application et la mémoire libérée, et j'ai remarqué en examinant les statistiques que l'espace d'échange était utilisé de manière significative et que plus de 1 Go était libéré avec ce recyclage.
C'est peut-être une question de base, mais je suis un gars UNIX et j'ai l'habitude d'échanger de ne pas m'habituer jusqu'à ce que vous soyez à court de mémoire. Cette boîte n'a jamais dépassé 75% d'utilisation de la mémoire. Est-ce une chose Windows ou une chose .NET ou une chose Amazon? Je soupçonne qu'il y a une fuite de mémoire beaucoup plus importante dans cette application que soupçonnée - elle ne fuit pas de 60M à 200M, elle fuit de 60M à 1,2GB, mais une grande partie de cela devient en quelque sorte "froide" et est poussée à échanger?
J'ai le recyclage de la mémoire défini sur le pool d'applications, mais cela déclenche la mémoire pleine de la boîte, donc cette application pourrait devenir vraiment très grosse avant de se recycler automatiquement.
Je pourrais mettre en place un recyclage "programmé" régulier, mais c'est une solution de contournement, je vais demander au développeur de réparer l'application, mais je dois comprendre ce qui se passe ici avec l'utilisation du swap pour m'assurer que je comprends bien.
Modifier avec plus d'informations: mémoire d'instance: 1,7 Go de swap: 4,5 Go
Je vois le processus w3wp.exe dans taskmgr montrant que la mémoire: 211 000k. Mais quand je l'ai redémarré (c'est dans son propre pool d'applications, et c'est la seule application sur la boîte), son utilisation de la mémoire est descendue à son point de départ normal de 60 Mo et comme 1 Go + de swap également libéré. Dans taskmgr, je venais d'avoir la mémoire habituelle (Private Working Set), mais j'ai vu le changement de swap via mon autre surveillance (Cloudkick). En y retournant et en regardant aujourd'hui, la mémoire est de retour à 195 M sur le processus (1,2 Go au total) et le swap est passé de 1,0 Go à 1,1 Go, il n'a pas été entièrement sauvegardé là où il était (graphique au fil du temps, c'est un fluage lent).
Je suis moins préoccupé par cette application spécifique et plus préoccupé par la simple compréhension du moment où Windows échange et comment il l'utilise, et de quoi s'inquiéter de la mémoire Windows et de l'utilisation des échanges en général.