IIS7에서 응용 프로그램 풀 유휴 시간 초과를 비활성화하는 방법은 무엇입니까?


답변:


184

예, 유휴 시간 초과 값을 0으로 설정하면 유휴 시간 초과가 비활성화됩니다.

이상하게도 MS 문서에는 문서화되어 있지 않지만 이에 대한 나의 증거는 다음과 같습니다.

  • IIS 설정 스키마

    IIS 설정 스키마를 살펴보면 다음과 같습니다.

    C:\Windows\System32\inetsrv\config\schema\IIS_schema.xml

    idleTimeout아래에 대한 스키마 정의

    <sectionSchema name="system.applicationHost/applicationPools">

    그것은 다음과 같습니다

    <attribute name="idleTimeout" 
           type="timeSpan" 
           defaultValue="00:20:00" 
           validationType="timeSpanRange" 
           validationParameter="0,2592000,60"/>
    

    당신이 보면 validationParameter속성 우리가 0 2,592,000 초 사이의 범위를 표시합니다 ( ,60지정이 설정의 세분화가,이 경우 값이 60 일분]에 의해 divisable해야합니다).

    시작 허용 값이 0표시되면 일반적으로 설정을 비활성화 할 수 있음을 나타냅니다.

  • IIS7 응용 프로그램 풀 유휴 시간 제한 설정

    브래드 킹슬리 (Brad Kingsley)는 OrcsWeb의 창립자이자 CEO로서 Microsoft 호스팅 및 골드 파트너로 잘 알려져 있고 존경받는 신뢰할 수 있습니다.

  • 그런 다음 "정상 작동"한다는 사실에 대한 경험적 증거도 있습니다.


3
다른 사람들을 향한 헤드 업-이를 읽은 후 IIS7에서 유휴 시간 제한을 0으로 설정하고 즉시 시간 초과되기 시작했습니다. 모든 페이지로드는 15 초 정도 걸렸습니다. 나는 지금 그것을 600으로 올렸고 모든 것이 다시 매우 빠릅니다.
nailitdown

1
@nailitdown : 다시 확인하고 싶을 수도 있습니다. IIS6 앱 풀 시간 제한을 0으로 설정하면 정상적으로 작동합니다. IIS7 / IIS6간에 차이가있을 가능성이 있습니다.
Doug S

3
VPS에 여러 가지 문제가 있다고 게시 한 이후로 작업 중입니다 ... 어떻게 든 잘못 구성되었을 수 있습니다. 방금 새 VPS에서 복제하려고 시도했지만 설명대로 올바르게 작동합니다.
nailitdown

3
ZERO3 @ - 잘 .... 변경하기 전에 어떤 트래픽이 높은 사이트에서 설정을하면해야 항상 준비 / QA 환경에 대한 부작용 등을위한 시험. 또한 변경 사항을 프로덕션 환경에 적용하는 동안 변경 사항이 적용될 때까지 공개 사용자를위한 유지 관리 페이지를 실제로 포기해야합니다. 놀라움이 없도록 이러한 변경 사항을 관리해야합니다.
Kev

2
@ Zero3-그렇습니다. 많은 앱 풀 설정을 변경하면 프로세스를 다시 시작해야 적용됩니다. 기본적으로 바로 적용됩니다. DisallowRotationOnConfigChange를 사용하여이를 변경할 수 있습니다. 이에 대한 자세한 내용은 serverfault.com/questions/333907/… 를 참조하십시오 .
TristanK

11

좋은 대답입니다! 고마워 Kev!

작은 업데이트 : 게시 한 URL이 이동했으며 현재 URL : http://bradkingsley.com/iis7-application-pool-idle-time-out-settings/

이것이 이것이 기본값이 아닌 이유가 있는지, 그리고 응용 프로그램 풀을 너무 오래 열어두면 성능에 영향을 줄 수 있는지 궁금합니다. 음, 유휴 상태 일 때 유지하면 트래픽이 있고 유휴 시간이 없을 때 재활용하지 않는 것보다 더 많은 문제가 발생하지 않습니다. 메모리 누수 또는 기타 리소스 누수가 걱정되는 경우 마지막 리사이클 / 메모리 소비 이후의 시간 / 요청 수를 기반으로 리사이클을 강제 실행하는 설정이 있습니다. 이에 대한 설명서는 다음과 같습니다.

http://technet.microsoft.com/en-us/library/cc753179(v=ws.10).aspx

유휴 상태 (idleTimeout = 0)에서 서버를 재활용하지 않도록 설정하고 24 시간마다 재활용합니다. 재활용> 일반 시간 간격 = 1440


15
마지막 서버 재시작 / iis 재설정 이후 24 시간이 걸리므로 재활용을 24 시간이 아닌 고정 된 시간 (예 : 0100)으로 설정하는 것이 좋습니다.

1
Import-Module WebAdministration

$pools = Get-ChildItem iis:\apppools

foreach ($pool in $pools)
{ 
$poolname = $pool.Name

Set-ItemProperty IIS:\AppPools\$poolname -name processModel -value @{idletimeout="20"}
Set-ItemProperty IIS:\AppPools\$poolname -name processModel -value @{idletimeoutaction="Suspend"}
set-ItemProperty IIS:\AppPools\$poolname -Name Recycling.periodicRestart -Value @{time="0"} 
set-ItemProperty IIS:\AppPools\$poolname -Name Recycling.periodicRestart.schedule -Value @{value="02:00:00"} 
Set-ItemProperty IIS:\AppPools\$poolname -name Recycling -value @{logEventOnRecycle="Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange, PrivateMemory"} 

Write-Host "Updated $poolname settings" 
}

6
붙여 넣은 코드에 대한 설명이 유용합니다.
Luke Alderton
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.