IIS와 .NET4 웹앱을 실행하는 Windows 2008 서버 (Amazon EC2)를 관리합니다. 나는 다른 날에 메모리 경고를 받고 가서 보았고, 프로세스 메모리가 느린 누수를 통해 시간이 지남에 따라 충분히 커 졌는지 확인하십시오. 60M에서 200M과 같이 크게 성장하지는 않았지만 모니터를 시작하기 위해 매우 낮은 임계 값 (75 %)을 초과하는 상자와 함께 계속 진행되었습니다.
나는 앱의 풀을 재활용하고 메모리가 비워졌으며 스왑 공간이 많이 사용되고 있고 1GB 이상이 그 리사이클로 비워 졌다는 통계를 검토했을 때 나타났습니다.
어쩌면 이것은 기본적인 질문 일 수도 있지만 저는 유닉스 사람이며 메모리가 부족해질 때까지 사용하지 않는 것으로 바꾸는 데 익숙합니다. 이 상자는 메모리 사용량이 75 %를 넘지 않았습니다. 이것은 Windows 또는 .NET 또는 Amazon입니까? 의심되는 것보다이 앱에서 메모리 누수가 훨씬 더 크다고 생각합니다. 60M에서 200M로 누출되지 않고, 60M에서 1.2GB로 누출되고 있지만, 그 중 많은 부분이 "콜드 (cold)"되어 스왑으로 밀려 나고 있습니까?
응용 프로그램 풀에 메모리 재활용이 설정되어 있지만 상자 전체 메모리를 트리거 하므로이 응용 프로그램은 자동으로 재활용되기 전에 실제로 커질 수 있습니다.
정기적 인 "시간 제한"재활용을 설정할 수는 있지만 해결 방법은 개발자가 앱을 수정하도록하지만 스왑 사용량으로 여기에서 무슨 일이 일어나고 있는지 이해해야이를 올바르게 이해할 수 있습니다.
추가 정보로 편집 : 인스턴스 메모리 : 1.7GB 스왑 : 4.5GB
taskmgr에 w3wp.exe 프로세스가 메모리 : 211,000k를 표시하는 것을 볼 수 있습니다. 그러나 다시 시작했을 때 (자체 앱 풀에 있고 상자에있는 유일한 앱입니다), 메모리 사용량은 정상적인 시작 지점 인 60M으로 내려 갔고 1GB 이상의 스왑도 해제되었습니다. taskmgr에서 나는 일반적인 메모리 (Private Working Set) 통계를 얻었지만 다른 모니터링 (Cloudkick)을 통해 스왑 변경을 보았습니다. 되돌아 가서 오늘 살펴보면, 프로세스에서 메모리는 최대 195M (총 1.2GB)이고 스왑은 1.0GB에서 1.1GB로 줄었습니다. 시간이 지남에 따라 백업하지 않았습니다. 느린 크립).
나는이 특정 응용 프로그램에 대해 덜 걱정하고 Windows 스왑 시간과 사용 방법, 일반적으로 주어진 Windows 메모리 및 스왑 사용에 대해 고려해야 할 사항을 이해하는 데 더 관심이 있습니다.