processModel 요소(ASP.NET 설정 스키마)
업데이트: 2007년 11월
Microsoft IIS(인터넷 정보 서비스) 웹 서버에서 ASP.NET 프로세스 모델 설정을 구성합니다. processModel 섹션은 Machine.config 파일에서만 설정할 수 있으며 서버에서 실행되는 모든 ASP.NET 응용 프로그램에 영향을 줍니다.
경고
processModel 요소의 변경 내용은 다른 구성 요소와 마찬가지로 설정이 변경된 후 바로 적용되는 것이 아니라 작업자 프로세스가 다시 시작되는 경우에만 적용됩니다. 자세한 내용은 이 항목의 뒤에 나오는 "설명" 부분을 참조하십시오.
configuration 요소(일반 설정 스키마)
system.web 요소(ASP.NET 설정 스키마)
processModel 요소(ASP.NET 설정 스키마)
<processModel
enable="true|false"
timeout="hrs:mins:secs|Infinite"
idleTimeout="hrs:mins:secs|Infinite"
shutdownTimeout="hrs:mins:secs|Infinite"
requestLimit="num|Infinite"
requestQueueLimit="num|Infinite"
restartQueueLimit="num|Infinite"
memoryLimit="percent"
webGarden="true|false"
cpuMask="num"
userName="<username>"
password="<secure password>"
logLevel="All|None|Errors"
clientConnectedCheck="hrs:mins:secs|Infinite"
comAuthenticationLevel="Default|None|Connect|Call|
Pkt|PktIntegrity|PktPrivacy"
comImpersonationLevel="Default|Anonymous|Identify|
Impersonate|Delegate"
responseDeadlockInterval="hrs:mins:secs|Infinite"
responseRestartDeadlockInterval="hrs:mins:secs|Infinite"
autoConfig="true|false"
maxWorkerThreads="num"
maxIoThreads="num"
minWorkerThreads="num"
minIoThreads="num"
serverErrorMessageFile=""
pingFrequency="Infinite"
pingTimeout="Infinite"
maxAppDomains="2000"
/>
특성 및 요소
다음 단원에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.
특성
특성 |
설명 |
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
autoConfig |
컴퓨터 구성을 기준으로 최적의 성능을 얻기 위해 다음 설정을 자동으로 구성할지 여부를 지정합니다.
값은 https://support.microsoft.com/kb/821268/ko에 있는 기술 자료 문서에 따라 설정됩니다. 이 특성은 .NET Framework 클라이언트 응용 프로그램에는 영향을 주지 않으며 ASP.NET 응용 프로그램에만 영향을 줍니다. autoConfig 특성은 다음 값 중 하나일 수 있습니다.
기존 구성이 없는 경우 Machine.config 파일의 기본값은 True입니다. |
||||||||||||||||
clientConnectedCheck |
ASP.NET에서 클라이언트가 연결되어 있는지 여부를 검사하기 전에 요청이 큐에 남아 있는 시간을 지정합니다. 기본값은 "00:00:05"(5초)입니다. |
||||||||||||||||
comAuthenticationLevel |
DCOM 보안을 위한 인증 수준을 지정합니다. comAuthenticationLevel 특성은 다음 값 중 하나일 수 있습니다.
기본값은 Connect입니다. |
||||||||||||||||
comImpersonationLevel |
COM 보안의 인증 수준을 지정합니다. comImpersonationLevel 특성은 다음 값 중 하나일 수 있습니다.
기본값은 Impersonate입니다. |
||||||||||||||||
cpuMask |
다중 프로세서 서버에서 ASP.NET 프로세스를 실행할 수 있는 프로세서(CPU)를 지정합니다. 이 값은 ASP.NET 스레드를 실행할 수 있는 CPU를 나타내는 비트 패턴을 지정합니다. 예를 들어 cpuMask 16진수 값 0x0d는 비트 패턴 1101을 나타냅니다. CPU가 네 개 있는 컴퓨터의 경우 이 값은 ASP.NET 프로세스를 CPU 0, 2, 3에 예약할 수 있지만 CPU 1에는 예약할 수 없음을 나타냅니다. ASP.NET에서는 해당하는 각 CPU에 대해 하나의 작업자 프로세스를 시작합니다. webGarden 특성을 true로 설정하면 이 특성은 작업자 프로세스를 해당 CPU 수로 제한합니다. 최대 작업자 프로세스 수는 CPU의 수와 같습니다. webGarden이 false인 경우에는 이 특성이 무시되고 작업자 프로세스가 하나만 실행됩니다. 이것이 기본 동작입니다. 기본값은 "0xffffffff"입니다. |
||||||||||||||||
enable |
프로세스 모델의 설정 여부를 지정합니다. enable 특성은 다음 값 중 하나일 수 있습니다.
기본값은 true입니다. |
||||||||||||||||
idleTimeout |
비활성 기간을 hr:min:sec 문자열 형식으로 지정합니다. 이 기간이 지나면 ASP.NET에서 자동으로 작업자 프로세스를 끝냅니다. 기본값은 Infinite입니다. |
||||||||||||||||
logLevel |
이벤트 로그에 기록할 이벤트 형식을 지정합니다. logLevel 특성은 다음 값 중 하나일 수 있습니다.
기본값은 Errors입니다. |
||||||||||||||||
maxAppDomains |
하나의 프로세스에 허용되는 최대 응용 프로그램 도메인 수를 지정합니다. 이 특성은 2000보다 작거나 같을 수 있습니다. 기본값은 2000입니다. |
||||||||||||||||
maxIoThreads |
CPU 기준으로 프로세스에 사용할 최대 I/O 스레드 수를 구성합니다. 예를 들어 단일 프로세서 서버에서 이 값이 25인 경우 ASP.NET에서는 런타임 API를 사용하여 프로세스 제한을 25로 설정합니다. 프로세서가 두 개 있는 서버에서는 이 제한이 50으로 설정됩니다. 이 특성의 값은 httpRuntime 구성 섹션의 minFreeThread 특성 설정보다 크거나 같아야 합니다. 스레딩 유형에 대한 자세한 내용은 Improving ASP.NET Performance의 "Threading Explained"를 참조하십시오. 이 특성의 범위는 5에서 100까지입니다. 기본값은 20입니다. |
||||||||||||||||
maxWorkerThreads |
CPU 기준으로 프로세스에 사용할 최대 작업자 스레드 수를 구성합니다. 예를 들어 단일 프로세서 서버에서 이 값이 25인 경우 ASP.NET에서는 런타임 API를 사용하여 프로세스 제한을 25로 설정합니다. 프로세서가 두 개 있는 서버에서는 이 제한이 50으로 설정됩니다. 이 특성의 값은 httpRuntime 구성 섹션의 minFreeThread 특성 설정보다 크거나 같아야 합니다. 스레딩 유형에 대한 자세한 내용은 Improving ASP.NET Performance의 "Threading Explained"를 참조하십시오. 이 특성의 범위는 5에서 100까지입니다. 기본값은 20입니다. |
||||||||||||||||
memoryLimit |
ASP.NET이 새 프로세스를 시작하고 기존 요청을 재할당하기 전에 작업자 프로세스가 소비할 수 있는 허용된 최대 메모리 크기(총 시스템 메모리의 비율)를 지정합니다. 기본값은 60입니다. |
||||||||||||||||
minIoThreads |
CPU 기준으로 프로세스에 사용할 최소 I/O 스레드 수를 구성합니다. maxIoThreads도 참조하십시오. 스레딩 유형에 대한 자세한 내용은 Improving ASP.NET Performance의 "Threading Explained"를 참조하십시오. 기본값은 1입니다. |
||||||||||||||||
minWorkerThreads |
CPU 기준으로 프로세스에 사용할 최소 작업자 스레드 수를 구성합니다. maxWorkerThreads도 참조하십시오. 스레딩 유형에 대한 자세한 내용은 Improving ASP.NET Performance의 "Threading Explained"를 참조하십시오. 기본값은 1입니다. |
||||||||||||||||
password |
이 특성을 userName과 함께 사용하면 구성된 Microsoft Windows ID로 작업자 프로세스가 실행됩니다. 암호가 필요 없는 특수 이름인 System과 Machine에 대한 자세한 내용 및 암호화된 작업자 프로세스 자격 증명을 레지스트리에 저장하는 방법에 대한 내용은 userName을 참조하십시오. 참고 구성 파일에 자격 증명을 저장하면 보안 문제가 발생할 수 있습니다. 자세한 내용은 이 문서의 뒷부분에 나오는 "레지스트리에 사용자 이름과 암호 저장"을 참조하십시오. 기본값은 AutoGenerate입니다. |
||||||||||||||||
pingFrequency |
ISAPI 확장에서 작업자 프로세스에 대해 ping을 실행하여 프로세스의 실행 여부를 확인하는 시간 간격을 표준 프로세스 모델 형식(hr:min:sec)으로 지정합니다. 작업자 프로세스가 pingTimeout 간격으로 실행되고 있지 않으면 다시 시작됩니다. 기본값은 Infinite입니다. |
||||||||||||||||
pingTimeout |
응답하지 않는 작업자 프로세스가 다시 시작되기 전의 시간 간격을 표준 프로세스 모델 형식(hr:min:sec)으로 지정합니다. ISAPI 확장은 pingFrequency 간격에 따라 작업자 프로세스에 대해 ping을 실행합니다. 작업자 프로세스가 pingTimeout 간격 내에 응답하지 않으면 프로세스가 다시 시작됩니다. 기본값은 Infinite입니다. |
||||||||||||||||
requestLimit |
ASP.NET에서 현재 작업자 프로세스 대신 새 작업자 프로세스를 자동으로 시작하기 전에 허용되는 요청 수를 지정합니다. 기본값은 Infinite입니다. |
||||||||||||||||
requestQueueLimit |
ASP.NET에서 새 요청에 대해 "503 – 서버 사용량이 많습니다." 오류를 반환하기 전에 큐에 허용되는 요청 수를 지정합니다. 기본값은 5000입니다. |
||||||||||||||||
responseDeadlockInterval |
다음 조건에 해당하는 경우 프로세스가 다시 시작되기 전의 시간 간격을 표준 프로세스 모델 형식(hr:min:sec)으로 지정합니다.
기본값은 "0:03:00"(3분)입니다. |
||||||||||||||||
responseRestartDeadlockInterval |
이 특성은 ASP.NET에서 더 이상 사용되지 않으며 호환성을 위해서만 제공됩니다. 따라서 이 특성이 구성 파일에 있어도 구성 오류가 발생하지 않습니다. 이제 교착 상태가 발생했을 때의 모든 재생 작업은 responseDeadlockInterval 특성에 의해 제어됩니다. 기본값은 "0:03:00"(3분)입니다. |
||||||||||||||||
restartQueueLimit |
비정상적으로 종료된 후 작업자 프로세스를 다시 시작할 때까지 기다리는 동안 큐에 대기되는 최대 요청 수를 지정합니다. 정상적인 방법으로 완전히 종료했거나 다시 시작하는 경우에는 이 설정이 적용되지 않습니다. 기본값은 10입니다. |
||||||||||||||||
serverErrorMessageFile |
심각한 오류가 발생한 경우 기본 메시지인 "서버를 사용할 수 없습니다." 대신 사용할 파일의 내용을 지정합니다. 파일 위치는 Machine.config 파일에 상대적이거나 절대 경로일 수 있습니다. 이 특성이 없으면 기본 메시지인 "서버를 사용할 수 없습니다."가 사용됩니다. |
||||||||||||||||
shutdownTimeout |
작업자 프로세스를 종료하는 데 허용되는 시간(분)을 지정합니다. 제한 시간이 만료되면 ASP.NET에서는 작업자 프로세스를 종료합니다. 이 시간은 hr:min:sec 문자열 형식으로 표시됩니다. 기본값은 "0:00:05"(5초)입니다. |
||||||||||||||||
timeout |
ASP.NET이 현재 작업자 프로세스 대신 새 작업자 프로세스를 시작할 때까지의 시간(분 단위)입니다. 기본값은 Infinite입니다. |
||||||||||||||||
userName |
ASP.NET에서 기본 프로세스 ID의 Windows ID와 다른 Windows ID를 사용하여 작업자 프로세스를 실행하도록 지정합니다. 기본적으로 이 특성은 Machine으로 설정되며 ASP.NET이 설치될 때 자동으로 만들어진 ASPNET 사용자 계정으로 프로세스가 실행됩니다. ASPNET 계정의 암호는 설치 시에 암호화 방식으로 생성됩니다. 이 특성과 password 특성에 유효한 자격 증명이 제공되면 지정된 계정으로 프로세스가 실행됩니다. 또한 userName에는 AutoGenerate를 암호로 사용하는 System이라는 다른 값도 있습니다. 이 값을 지정하면 프로세스가 관리자 계정으로 실행되고 해당 프로세스에서 실행되는 모든 ASP.NET 사용자 코드가 전체 관리자 권한을 가질 수 있습니다. 도메인 컨트롤러 서버에서 ASP.NET을 사용하는 방법에 대한 내용은 이 항목의 뒤에 나오는 "설명" 부분을 참조하십시오. 참고 이 특성과 password 특성은 구성 파일에 일반 텍스트로 저장됩니다. Microsoft IIS(인터넷 정보 서비스)에서는 사용자 에이전트 요청에 대한 응답으로 .config 파일을 전송하지는 않지만 다른 방법을 사용하여 구성 파일을 읽을 수 있습니다. 예를 들어 서버 도메인에서 적절한 자격 증명을 가진 인증된 사용자를 통해 구성 파일을 읽을 수 있습니다. 보안을 위해 processModel 섹션은 암호화된 userName 및 password 특성을 레지스트리에 저장할 수 있도록 지원합니다. 자격 증명은 Windows 2000 및 Windows XP DPAPI(데이터 보호 API) 암호화 기능에 의해 암호화된 REG_BINARY 형식이어야 합니다. 자세한 내용은 이 문서의 뒷부분에 나오는 "레지스트리에 사용자 이름과 암호 저장"을 참조하십시오. 기본값은 "machine"입니다. |
||||||||||||||||
webGarden |
cpuMask 특성과 함께 사용되어 CPU 선호도를 제어합니다. 다중 프로세서 웹 서버를 웹 가든이라고 합니다. webGarden 특성은 다음 값 중 하나일 수 있습니다.
기본값은 False입니다. |
자식 요소
없음
부모 요소
요소 |
설명 |
---|---|
system.web |
ASP.NET 구성 섹션에 대한 루트 요소를 지정하며, ASP.NET 웹 응용 프로그램을 구성하고 응용 프로그램의 동작 방식을 제어하는 구성 요소를 포함합니다. |
설명
관리 코드 구성 시스템은 processModel 구성 설정을 읽지 않습니다. 대신 관리되지 않는 DLL인 aspnet_isapi.dll에서 processModel 구성 설정을 직접 읽습니다. 이 섹션의 변경 내용을 적용하려면 IIS 작업자 프로세스를 다시 시작해야 합니다.
ASP.NET을 IIS 버전 6에서 네이티브 모드로 실행하는 경우에는 IIS 6 프로세스 모델이 사용되고 processModel 섹션의 일부 특성이 무시됩니다. 그러나 다음 특성은 적용됩니다.
autoConfig
maxIoThreads
maxWorkerThreads
minIoThreads
minWorkerThreads
requestQueueLimit
responseDeadlockInterval
IIS 6.0에서 프로세스 ID, 순환 또는 기타 프로세스 모델 값을 구성하려면 인터넷 서비스 관리자 사용자 인터페이스를 사용하여 응용 프로그램에 맞게 IIS 작업자 프로세스를 구성합니다.
참고
IIS 6에서 ASP.NET을 IIS 5.0 격리 모드로 실행하도록 구성한 경우에는 ASP.NET 2.0을 사용할 수 없습니다.
시간 값은 "시:분:초" 형식입니다. 콜론 없이 숫자 하나만 지정하면 해당 값이 분으로 간주됩니다. 따라서 timeout="4"는 timeout="00:04:00"과 같습니다.
ASP.NET 응용 프로그램에서 교착 상태로 인해 다시 시작되었음을 나타내는 오류 메시지와 함께 ASP.NET 작업자 프로세스(Windows 2000 및 Windows XP Professional의 경우 aspnet_wp.exe, Windows Server 2003의 경우 w3wp.exe)가 다시 시작되는 경우 responseDeadlockInterval 특성의 값을 늘려야 합니다.
도메인 컨트롤러와 로컬 ASPNET 계정
도메인 컨트롤러에 .NET Framework 버전 1.1을 설치할 때 로컬 ASPNET 계정은 만들어지지 않습니다. 대신 ASP.NET 응용 프로그램은 다음과 같이 다른 ID로 실행됩니다.
Windows 2000 Server를 실행하는 도메인 컨트롤러에서는 ASP.NET 응용 프로그램이 IWAM_machinename ID로 실행됩니다.
Windows Server 2003을 실행하는 도메인 컨트롤러에서는 ASP.NET 응용 프로그램이 IIS 격리 모드에 관계없이 NETWORK SERVICE ID로 실행됩니다.
도메인 컨트롤러에서 ASP.NET을 실행할 때 추가 단계를 수행하지 않으면 올바로 동작하지 않을 수도 있습니다. 도메인 컨트롤러에서 .NET Framework 버전 1.1을 실행하는 방법에 대한 자세한 내용은 KB(기술 자료) 검색 페이지에서 Q824308 "BUG: IWAM Account Is Not Granted the Impersonate Privilege for ASP.NET 1.1 on a Windows 2000 Domain Controller with SP4" 문서를 참조하십시오. 도메인 컨트롤러에서 .NET Framework 버전 1.0을 실행하는 방법에 대한 자세한 내용은 KB(기술 자료) 검색 페이지에서 Q315158 "FIX: 도메인 컨트롤러에서 비 관리자 도메인 계정을 사용하면 ASP.NET이 작동하지 않는다 " 문서를 참조하십시오.
레지스트리에 사용자 이름과 암호 저장
사용자 이름과 암호를 암호화하여 레지스트리에 저장하려면 다음 예제와 같이 userName 및 password 특성을 설정합니다.
userName="registry:HKLM\Software\AspNetProcess,Name"
password="registry:HKLM\Software\AspNetProcess,Pwd"
registry 키워드와 쉼표(,) 사이의 문자열은 ASP.NET에서 여는 레지스트리 키의 이름을 나타냅니다. 쉼표(,) 뒤에는 ASP.NET이 자격 증명을 읽어 오는 단일 문자열 값 이름이 포함됩니다. 쉼표(,)는 필수 요소이며 자격 증명은 HKLM 하이브에 저장되어야 합니다. 구성 형식이 올바르지 않으면 ASP.NET에서는 작업자 프로세스를 시작하지 않으며 현재 계정 만들기 실패 코드 경로가 표시됩니다.
자격 증명은 Windows API 함수 CryptProtectData의 호출 결과가 포함된 REG_BINARY 형식이어야 합니다. Aspnet_setreg.exe를 사용하면 암호화된 자격 증명을 만들어 레지스트리에 저장할 수 있습니다. Aspnet_setreg.exe에서는 CryptProtectData를 사용하여 암호화를 수행합니다. Aspnet_setreg.exe와 Microsoft Visual C++ 소스 코드 및 설명서를 다운로드하려면 ASP.NET 웹 사이트에서 "aspnet_setreg"를 검색하십시오.
Administrators 및 SYSTEM에만 액세스 권한이 제공되도록 암호화된 자격 증명을 저장하는 키에 대한 액세스 권한을 구성해야 합니다. 이 키는 SYSTEM으로 실행되는 ASP.NET 프로세스에서 읽으므로 다음과 같은 사용 권한을 설정합니다.
Administrators:F
SYSTEM:F
CREATOR OWNER:F
ProcessAccount: R
이렇게 하면 다음과 같은 방법으로 데이터를 보호할 수 있습니다.
ACL 권한에는 데이터에 액세스하는 ID가 Administrator로 지정되어 있어야 합니다.
공격자는 서버에서 코드를 실행하여(CryptUnprotectData) 계정에 대한 자격 증명을 복구해야 합니다.
기본 구성
다음의 기본 processModel 요소는 Machine.config 파일 또는 루트 Web.config 파일에 명시적으로 구성되어 있지 않습니다. 그러나 이 요소는 응용 프로그램에서 반환하는 기본 구성입니다.
<processModel
enable="true"
timeout="Infinite"
idleTimeout="Infinite"
shutdownTimeout="00:00:05"
requestLimit="Infinite"
requestQueueLimit="5000"
restartQueueLimit="10"
memoryLimit="60"
webGarden="false"
cpuMask="0xffffffff"
userName="machine"
password="AutoGenerate"
logLevel="Errors"
clientConnectedCheck="00:00:05"
comAuthenticationLevel="Connect"
comImpersonationLevel="Impersonate"
responseDeadlockInterval="00:03:00"
responseRestartDeadlockInterval="00:03:00"
autoConfig="true"
maxWorkerThreads="20"
maxIoThreads="20"
minWorkerThreads="1"
minIoThreads="1"
serverErrorMessageFile=""
pingFrequency="Infinite"
pingTimeout="Infinite"
asyncOption="20"
maxAppDomains="2000"
/>
다음의 기본 processModel 요소는 .NET Framework 버전 1.0 및 1.1의 Machine.config 파일에 구성되어 있습니다.
<processModel
enable="true"
timeout="Infinite"
idleTimeout="Infinite"
shutdownTimeout="0:00:05"
requestLimit="Infinite"
requestQueueLimit="5000"
restartQueueLimit="10"
memoryLimit="60"
webGarden="false"
cpuMask="0xffffffff"
userName="machine"
password="AutoGenerate"
logLevel="Errors"
clientConnectedCheck="0:00:05"
comAuthenticationLevel="Connect"
comImpersonationLevel="Impersonate"
responseRestartDeadlockInterval="00:09:00"
responseDeadlockInterval="00:03:00"
<!-- In the .NET Framework version 1.1, the next two attributes are
set to 20. -->
maxWorkerThreads="25"
maxIoThreads="25"
/>
요소 정보
구성 섹션 처리기 |
|
구성 멤버 |
|
구성 가능한 위치 |
Machine.config |
요구 사항 |
Microsoft IIS(인터넷 정보 서비스) 버전 5.0, 5.1 또는 6.0 .NET Framework 버전 1.0, 1.1 또는 2.0 Microsoft Visual Studio 2003 또는 Visual Studio 2005 |