ASP.NET Core 6.0으로 개발되어서 서버에 윈도우 서비스로 동작되는 프로그램이 있습니다. 메모리 누수가 있어서 몇일만 지나면 사용중인 메모리가 몇십기가가 되어 버립니다.
메모리 누수의 원인을 찾기위해 서버에서 아래와 같이 실행했습니다.
dotnet-dump collect -p <pid>
그러나 아래와 같이 오류가 발생합니다.
Invalid process id <pid> - Access is denied. (5)
관리자 권한으로 실행해도 마찬가지로 오류가 발생합니다.
대상 프로그램은 윈도우 서비스로 실행되고 있어서 권한 오류가 발생하는것 같습니다.
윈도우 서비스로 실행 중인 프로그램을 dotnet-dump로 덤프를 생성하려면 어떻게 해야 할까요?
아니면 dotnet-dump 말고 메모리 누수의 원인을 찾기위한 더 좋은 방법이 있을까요?
(대상 시스템은 운영서버라서 개발툴을 설치할 수 없으며, 로컬에서는 재현이 많이 까다로와서 운영서버에서 원인 분석을 하고 싶습니다.)
감사합니다.
그런데 작업 관리자로 덤프하니까 덤프하는동안 프로세스가 일시 정지되네요.
메모리 누수로 프로세스의 메모리 사용량이 매우 크다보니 덤프를 위해 일시 정지되는 시간도 매우 오래 걸립니다.
어쨌든 dotnet-dump 처럼 덤프는 잘 생성됩니다.
(프로세스 일시 정지 없이 덤프가 생성되면 좋을 것 같은데요.)