IIS 7.5-web.config를 업데이트 할 때 겹친 재활용 비활성화 속성이 적용되지 않음


25

일부 리소스를 독점적으로 보유하고있는 사이트가 있습니다. 적절한 시간에 .NET Application_Start 및 Application_End 이벤트를 사용하여 이러한 리소스에 대한 잠금을 획득하고 해제했습니다. 이것이 제대로 작동하려면 주어진 시간에 내 응용 프로그램 인스턴스가 하나만 실행될 수 있습니다.

이를 위해 Disable Overlapped Recycle응용 프로그램 풀 의 속성을로 설정 했습니다 True. 이 속성은 앱 풀이 재활용 될 때마다 새 작업자 프로세스가 시작되기 전에 이전 작업자 프로세스가 완전히 종료되도록합니다. 이는 유휴 시간 제한에 도달하거나 특정 시간 / 시간 간격 규칙에 따라 자동으로 IIS를 통해 앱 풀을 수동으로 재활용 할 때마다 잘 작동합니다.

그러나 사이트의 web.config가 업데이트되면이 규칙이 적용되지 않습니다. 이전 작업자 프로세스가 종료되기 전에 새 작업자 프로세스가 시작됩니다. 이로 인해 나쁜 일이 발생합니다. web.config가 업데이트 될 때 앱 풀이 재활용 되도록 Disable Recycling for Configuration Changes속성을 설정했습니다. False이는 개발 중에 자주 발생합니다.

이것이 예상되는 것입니까, 아니면 IIS의 버그입니까? web.config를 변경해도 앱 풀이 재활용되지 않도록 설정하는 유일한 옵션입니까? 사람들이 구성을 변경 한 다음 응용 프로그램 풀을 재활용하는 것을 잊어 버리는 많은 두통을 일으킬 것이라 확신하기 때문에 오히려 이것을하지 않을 것입니다.

최신 정보:

더 명확하게 말하면, start이전 작업자 프로세스가 종료되기 전에 새 작업자 프로세스 이벤트가 호출되면 이전 작업자 프로세스 end이벤트가 호출되지 않습니다. 시퀀스에서 발생하지 않으며 전혀 발생하지 않습니다.


새 작업자 프로세스가 시작되기 전에 web.config가 업데이트 된 후 얼마나 걸립니까?
Greg Askew

재활용 후 사이트에 액세스하려고하면 새로운 작업자 프로세스가 시작됩니다. 따라서 빠른 경우 1 초도 채 걸리지 않습니다. 남아있는 경우 이전 작업자 프로세스 '종료'이벤트는 재활용 후 20-30 초 후에 발생합니다.
John

나는 같은 문제가 있습니다. 중복이 있습니다
Andrew Rimmer

11
web.config 파일을 편집하면 appDomain이 다시로드됩니다. appDomain은 AppPool과 분리되어 있습니다. web.config를 변경하여 새로운 W3WP 프로세스 ID를 볼 수 없습니다. 여기를 보십시오 treeloop.com/blog/iis-application-domain-and-pool-recycling
kheld

1
@kheld는 절대적으로 맞습니다 (아마도 이것을 대답으로 추가하십시오) 이것은 appool 겹침이 아니며 appDomain 겹침입니다. 나는 이것을 막을 수 있다고 생각하지 않지만 변경시 앱 도메인 재활용을 비활성화 할 수 있습니다.
Sam Cogan

답변:


1

이 MSDN 게시물에서 : https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/

따라서 코드 배포 프로세스의 일부로 다음 변경 사항 중 하나를 배포하면 풀이 재활용되는 것처럼 보입니다.

즉시 재활용

  • Web.config 변경
  • Machine.config 변경
  • Global.asax 변경
  • 저장소 디렉토리 변경
  • App_Code 변경

( /programming/302110/what-causes-an-application-pool-in-iis-to-recycle 에서 빌림 )

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.