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

일부 리소스를 독점적으로 보유하고있는 사이트가 있습니다. 적절한 시간에 .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이벤트가 호출되지 않습니다. 시퀀스에서 발생하지 않으며 전혀 발생하지 않습니다.



답변

이 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 에서 빌림 )


답변