답변:
Tech Ed 2003에서 발표자는이 질문을 받았고, 매일 경계에서 발생하지 못하도록 (예 : 서버 / 도메인에서 예약 된 다른 일일 작업과 구별하기 위해) 불규칙적 인주기를 원했습니다.
여기 사이트 (링크가 끊어졌습니다)는 다음과 같이 추측했습니다.
... (29는) 24 이후 첫 번째 소수이므로 다른 서버 프로세스에서 규칙적인 패턴으로 발생할 가능성이 가장 적습니다. 문제에 대한 조사를 완화
다른 사이트에서 이것을 확인하는 것으로 보입니다.
( 웨이드 힐모 )는 24 시간 동안 가장 작은 소수이기 때문에 29 시간을 제안했습니다.
좋아, 이것은 나를 괴롭혔다. 그래서 나는 파고 들었고 마침내 IIS 팀에 있던 사람 에게서이 게시물 을 발견 했다.
IIS6이 기본적으로 29 시간마다 재활용되는 이유
IIS6이 기본적으로 29 시간마다 재활용되는 이유는 (29 시간을 기본값으로 선택하는 이유가 있음) 그렇지 않을 가능성이 높기 때문에 웹 응용 프로그램에서 실행되는 웹 응용 프로그램을 신뢰할 수없고 문자 그대로 자주 다시 시작해야하기 때문입니다.
따라서 IIS6는 사용자의 웹 응용 프로그램이 24 시간 이상 연속 실행되지 않고 기능이 적절히 계획되고 기본값이 선택된다는 전제 (통칭 냉소적)를 중심으로 구축되었습니다. 작업자 프로세스는 29 시간마다 재활용되고, 프로세스 시작 및 종료가 모니터링되며, 프로세스가 계속 실행되고 있는지 확인하기 위해 프로세스를 지속적으로 핑 (ping)하고, 프로세스 핸들이 추적되어 예기치 않게 종료 될 때 신호 등을 보냅니다.
재활용은 정상적인 작업의 일부라는 사실을 인식하여 IIS6는 최종 사용자와 재활용을 분리합니다. 최종 사용자의 TCP 연결은 커널 모드 마법으로 인해 재활용 중에 종료되지 않습니다. ASP.Net Session State Service와 같이 세션 상태 프로세스 외부 프로세스를 저장하는 사용자 모드 응용 프로그램과 결합하면 웹 응용 프로그램이 모든 단일 처리 후 충돌하더라도 사용자가 볼 수있는 데이터 손실없이 안정적인 가동 시간을 보장합니다. 사용자 요청.
이는 신뢰할 수없는 웹 응용 프로그램을 제공하고 최종 사용자에게 신뢰할 수있는 것처럼 보이게하고 신뢰할 수없는 웹 응용 프로그램을 수정하지 않고도 IIS6이 수행 할 수있는 수준입니다.
물론 신뢰할 수없는 응용 프로그램을 모두 신뢰할 수있는 것처럼 보이게 만들 수있는 것은 아닙니다. 그러나 IIS6는 확실히 훨씬 더 많은 노력을 기울입니다.
귀하의 경우, resiliancy는 비 지속적 사용자 상태에 부작용이 있지만 쉽게 조정할 수 있습니다.
웹 응용 프로그램에 문제가없고 진행중인 세션 상태를 유지한다고 가정하면 다음 기본값을 변경하려고합니다. 1. 29 시간주기 재활용 해제 2. 20 분 유휴 시간 제한 해제
이렇게하면 예기치 않은 세션 상태 손실이 방지됩니다.
물론 Out-of-process 세션 상태의 응용 프로그램을 사용하는 경우 모든 것을 기본값으로 유지하고 기능과 안정성의 차이를 느끼지 못할 수 있습니다.