Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)
(시리즈 글이 7개 있습니다.)
.NET Framework: 174. 작업자 프로세스(w3wp.exe)가 재시작되는 시점을 알 수 있는 방법
; https://www.sysnet.pe.kr/2/0/841

.NET Framework: 447. w3wp.exe AppPool 재생(recycle)하는 방법 정리
; https://www.sysnet.pe.kr/2/0/1704

개발 환경 구성: 246. IIS 작업자 프로세스의 20분 자동 재생(Recycle)을 끄는 방법
; https://www.sysnet.pe.kr/2/0/1774

.NET Framework: 643. 작업자 프로세스(w3wp.exe)가 재시작되는 시점을 알 수 있는 방법 - 두 번째 이야기
; https://www.sysnet.pe.kr/2/0/11145

개발 환경 구성: 702. IIS - AppPool의 "Disable Overlapped Recycle" 옵션
; https://www.sysnet.pe.kr/2/0/13514

닷넷: 2196. IIS - AppPool의 "Disable Overlapped Recycle" 옵션의 부작용
; https://www.sysnet.pe.kr/2/0/13516

닷넷: 2274. IIS - (프로세스 종료 없는) AppDomain Recycle
; https://www.sysnet.pe.kr/2/0/13672




작업자 프로세스(w3wp.exe)가 재시작되는 시점을 알 수 있는 방법


지난번 성능 카운터 작업을 하면서,

PerformanceCounter의 RawValue/NextValue()에서 멈춤 현상
; https://www.sysnet.pe.kr/2/0/832

InstanceLifetime을 모르는 상태에서 문제 해결을 하기 위해, w3wp.exe가 재시작하는 시점에 가지고 있던 성능 카운터를 닫는 시도를 해보았습니다.

하지만, 다들 아시는 것처럼 IIS는 w3wp.exe를 재시작하는 것에 대한 어떠한 알림도 하지 않습니다. (적어도 IIS 7.5까지는 없는 것 같다는!)

대신에, 웹 응용 프로그램을 IIS에서 다루는 방법에서 힌트를 얻을 수 있습니다. 즉, 가상 응용 프로그램(또는 웹 사이트) 단위마다 "Application Domain"을 생성하기 때문에 "AppDomain"이 내려가는 시점을 w3wp.exe가 재시작하는 시점으로 판단해 볼 수 있습니다. 실제로, 아래의 코드는 테스트를 해보면 잘 동작합니다.

static TestClass()
{
    AppDomain.CurrentDomain.DomainUnload += new EventHandler(CurrentDomain_DomainUnload);
}

static void CurrentDomain_DomainUnload(object sender, EventArgs e)
{
	Debug.WriteLine("Web Application is recycling...");
}

물론, 비정상 종료(crash)로 인한 w3wp.exe 재시작은 위의 코드로 감지해 낼 수 없습니다.




여담으로, AppDomain이 재시작을 하게 되는 원인은 무척 다양한데 (예를 들어, .config이 바뀌거나 IIS 설정이 바뀌는 경우 등등...) 좀 더 구체적인 원인을 알고 싶다면 다음에 소개되는 방법을 통해 이벤트 로그 정도에 남도록 하는 것은 가능합니다.

ASP.NET Case Study: Lost session variables and appdomain recycles
 - How do you determine what caused an appdomain restart?
; http://blogs.msdn.com/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx



[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 7/10/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2017-02-16 01시01분
작업자 프로세스(w3wp.exe)가 재시작되는 시점을 알 수 있는 방법 - 두 번째 이야기
; http://www.sysnet.pe.kr/2/0/11145

Application Pool vs Application Domain Recycling in Asp.net?
; https://stackoverflow.com/questions/60105130/application-pool-vs-application-domain-recycling-in-asp-net
정성태

... 166  167  168  169  170  171  172  173  174  175  176  [177]  178  179  180  ...
NoWriterDateCnt.TitleFile(s)
559정성태1/1/200826992Windows: 28. Vista에서 끌어다 놓기로 GAC 등록하는 방법 [2]
558정성태1/1/200843686개발 환경 구성: 33. 32bit/64bit OLE DB Provider [1]
557정성태12/22/200722578개발 환경 구성: 32. WSCF와 VS.NET 2008
556정성태12/16/200720744기타: 22. 인기 순위 정리 : 조회수 1000 회 이상
555정성태12/16/200723473기타: 21. 인기 순위 정리 : 조회수 500 ~ 999회 글 목록
554정성태12/16/200728111기타: 20. 인기 순위 정리 : 조회수 250 ~ 499회 글 목록
553정성태12/16/200728390기타: 19. 인기 순위 정리 : 조회수 100 ~ 249회 글 목록
552정성태12/16/200722006기타: 18. 인기 순위 정리 : 조회수 000 ~ 099 회 글 목록
550정성태12/16/200721006Team Foundation Server: 23. TFS 2005에서 TFS 2008로 마이그레이션 [2]
549정성태12/16/200722428Team Foundation Server: 22. TFS 설정 - 주소를 도메인으로 변경
548정성태12/15/200740043오류 유형: 49. Report Server - 원격 서버에 연결할 수 없습니다
547정성태12/4/200728471.NET Framework: 98. .NET 비동기 Socket과 스레드
546정성태12/4/200719510Team Foundation Server: 21. Microsoft Office가 참조된 경우의 빌드 환경 구성
545정성태12/4/200726205Windows: 27. 눈으로 확인해 보는 ASLR 기능 [1]
544정성태11/25/200722139오류 유형: 48. VS.NET 2008 설치 오류 - Error code 1602 [5]
543정성태11/25/200725097개발 환경 구성: 31. ROBOCOPY XP026 버전 [1]
542정성태11/3/200740187VS.NET IDE: 55. XML/XSLT로 구현하는 매크로 확장 [5]파일 다운로드2
538정성태10/11/200726684스크립트: 10. VBScript - "Sub를 호출할 때는 괄호를 사용할 수 없습니다." [2]
537정성태9/28/200735325개발 환경 구성: 30. 64비트 OS에서의 ChartFX 라이선스 문제
536정성태9/12/200732117.NET Framework: 97. WCF : netTcpBinding에서의 각종 Timeout 값 설명 [11]
535정성태9/11/200729718.NET Framework: 96. WCF - PerSession에서의 클라이언트 연결 관리 [5]
534정성태9/3/200725068개발 환경 구성: 29. VHD 파일 크기 줄이기
533정성태9/2/200727736개발 환경 구성: 28. CA 서비스 - 사용자 정의 템플릿 유형 추가
532정성태9/2/200730419개발 환경 구성: 27. AD CA에서 Code Signing 인증서 유형 추가 방법
531정성태9/2/200726053.NET Framework: 95. WCF에서의 DataTable 사용
530정성태9/1/200722610.NET Framework: 94. WCF 예외에 대한 시행착오
... 166  167  168  169  170  171  172  173  174  175  176  [177]  178  179  180  ...