2010-03-09 5 views
5

IIS7 서버에서 ASP.NET 응용 프로그램을 실행 중입니다. 오랫동안 잘 돌아 갔지만 지난 주 정도에 걸쳐 모든 사용자의 세션이 하루에 여러 번 삭제되었습니다. http://blogs.iis.net/ganekar/archive/2008/12/12/iis-7-0-application-pool-recycles-log-a-event-in-windows-event-log.aspx에서 설명한대로 응용 프로그램 풀 재활용 로깅 옵션을 모두 활성화했지만 이벤트 로그에 아무 것도 표시하지 않았습니다.ASP.NET 응용 프로그램이 재활용되는 이유는 무엇입니까?

이벤트 로그에는 오류가 없으며 모든 사용자가 세션을 잃어 버리는 것을 제외하고는 눈에 띄는 증상이 없습니다.

IIS가 응용 프로그램 풀을 재활용하는 다른 이유가 있습니까? 무슨 일이 일어나고 있는지 알아 내는데 사용할 수있는 다른 유형의 로깅이 있습니까?

+0

몇 가지 추가 정보가 있습니다. 저는 매시간 IIS 작업자 프로세스 ID를 기록하는 스크립트를 작성했습니다.세션 문제는 오늘 아침에 다시 발생했지만 로그를 확인할 때 프로세스 ID가 여전히 동일 함이 나타났습니다. 따라서 작업자 프로세스가 다시 시작되기 때문에 이러한 상황이 발생하지 않는 것으로 보입니다. –

+0

서버에 프로세스 모니터를로드하고 http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx의 지침을 사용하여 응용 프로그램이 끝날 때마다 이벤트 로그 항목을 작성합니다. 오늘 다시 발생했으며 기록 된 메시지는 "C : \ inetpub \ wwwroot \ '에 대한 디렉토리 이름 변경 알림입니다 .JostTraq 디렉토리 변경 또는 디렉토리 이름 바꾸기" 프로세스 모니터는 많은 "NotifyChangeDirectory"이벤트를 보여 주었지만 어디서 왔는지 알 수는 없습니다. –

답변

6

이 문제가 발생하면 서버에 파일을 배포 한 직후에 어떻게 했습니까?

불쾌한 컴파일 태그에 numRecompilesBeforeAppRestart라는 구성 옵션이 있습니다 : 나는 이것이 전에 모든 사용자 세션을 죽이는 응용 프로그램을 통해 봤는데 (15)에

<system.web> 
    <compilation debug="true" numRecompilesBeforeAppRestart="15"> 

http://msdn.microsoft.com/en-us/library/system.web.configuration.compilationsection.numrecompilesbeforeapprestart.aspx

이 값은 기본값 나를 위해 범인. 가볍게 사용 된 웹 응용 프로그램이 업데이트 된 후 (새 파일이 서버로 복사 됨, 수백 개의 파일에 덮어 쓰여지는 모든 파일 덮어 쓰기가 끝난 후) 우리는 모든 사용자에 대한 모든 세션 값이 사라지는 지속적인 AppDomain 다시 시작을 얻었습니다. 다음 http://support.microsoft.com/kb/319947

내 시나리오에 정말 중요한 관련 텍스트입니다 :

은 내가 겪고있어 동작을 나열이 버그 리포트를 발견

그러나,이 문제가 발생하면 부하가 많은 새 .aspx 또는 .ascx 파일을 서버 (예 : 61 개 파일)로 변경하십시오. 서버는 처음 15 개 파일이 재 컴파일하고 다른 15 개 파일이 서버 때까지 다시 컴파일 때마다이 네 개의 응용 프로그램에서 결과 (61) 하나의 필요 경우에도 다시 시작에 도달 할 때 응용 프로그램 언로드합니다.

값을 99999로 전환했는데 문제가 해결되었습니다. 이는 더 많은 메모리가 작업자 프로세스에 축적됨을 의미하므로 IIS AppPool 재활용 설정에 일일 재활용 (사이트에 사용자가없는 경우 3am)을 추가했습니다.

+0

+1 멋진 링크 ... – slugster

+1

잘하면 이제 Google에서 쉽게 찾을 수 있습니다. –

+0

그건 흥미로운 기사 였지만 제 문제는 다릅니다. 이 버그는 대규모 업데이트 후에 짧은 시간 안에 여러 번 응용 프로그램이 다시 시작되는 것으로 보입니다. 우리의 마지막 업데이트는 약 일주일 전이었고, 재시작은 오랜 기간 동안 발생하는 것으로 보입니다. –

0

메타베이스의 옵션을 설정하여 여러 유형의 재활용 이벤트를 이벤트 로그에 기록 할 수 있습니다.

IIS 6.0 인해 개인 메모리 제한을 초과하는 재활용 이벤트 로깅을 사용하도록 웹 서버에서이 작업을 실행하기 위해, 예를 들어 http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/87892589-4eda-4003-b4ac-3879eac4bf48.mspx

참조 : 여기

cd %systemroot%\inetpub\adminscripts 
cscript.exe adsutil.vbs set w3svc/AppPools/YOUR_APP_POOL_NAME/AppPoolRecyclePrivateMemory true 

것은에 대한 링크입니다 IIS 7.0의 [다른] 지침 : http://technet.microsoft.com/en-us/library/cc771318%28v=ws.10%29.aspx

관련 문제