"ResourceNotFound(404)" 오류 및 요청 된 DSC에 당겨 서버 장애

적용 대상: Windows Server 2016

증상


인터넷 정보 서비스 (IIS)를 통해 웹 서버에서 실행 되는 웹 서비스로 Windows Server 2016 원하는 상태 구성 (DSC) 풀 서버를 구성 하는 것으로 가정 합니다.

이 시나리오에서는 "ResourceNotFound(404)" 오류 메시지를 생성 하 여 DSC 풀 서버 응용 프로그램이 들어오는 요청에 응답 합니다. 응용 프로그램 풀을 재활용 하거나 응용 프로그램 풀이 재활용 되는 자동으로 IIS 설정 때문에 특히 그렇습니다. 또한 이벤트 623는 응용 프로그램 로그에 기록 될 수 있습니다.

로그 이름: 응용 프로그램원본: ESENT이벤트 ID: 623작업 범주: 트랜잭션 관리자수준: 오류설명:w3wp (10204) PSDSCPullSever: (0)이 인스턴스의 버전 저장소가 최대 크기인 32 Mb에 도달 했습니다. 장기 실행 트랜잭션은 버전 저장소가 정리 되지 못하여 이며 크기가 커진 하 가능성이 높습니다. 장기 실행 트랜잭션이 완전히 커밋 또는 롤백될 때까지 업데이트가 거부 됩니다.

원인


이 문제는 다음 원인 중 하나가 있을 수 있습니다.

원인 1

확장 가능한 저장소 엔진 (ESE) 데이터베이스 버전 저장소 영역이 없습니다. 이 응용 프로그램 풀 재활용 경우 큰 트랜잭션에 의해 발생할 수 있습니다.

원인 2

"PSWS" 응용 프로그램 풀의 작업자 프로세스가 여러 개 구성 되어 있습니다. DSC Devices.edb 데이터베이스 파일을 사용 하 여 한이 파일 (한 번에 한 프로세스는 데이터베이스를 액세스할 수)만 단독 사용 모드로 열려 있어야 합니다. 따라서 다른 작업자 프로세스에서 파일에 액세스할 수 없습니다 하 고 이러한 데이터베이스 조회 실패 합니다.

원인 3

W3WP.exe 프로세스를 재활용 하는 경우 IIS 이전 프로세스가 중지 되기 전에 새 프로세스를 시작 합니다. 새로운 프로세스는 기존 프로세스를 소유 하는 동안 데이터베이스를 액세스할 수 없습니다.

해결 방법


이 문제를 해결 하려면 적절 한 해결단계를 수행 합니다.

해결 방법 1: 버전 저장소 영역 ESE 데이터베이스는 모두 사용 되 고

버전 저장소의 크기를 구성 합니다. 이렇게 하려면, 다음 단계를 수행하십시오.

  1. Windows Server 2016 x64 기반 시스템 (KB4480977)에 대 한 누적 업데이트를 설치 합니다.
  2. 다음 위치에서 Microsoft.Powershell.DesiredStateConfiguration.Service.dll 파일을 복사 합니다.
    C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PSDesiredStateConfiguration\PullServer
  3. 다음 위치 (또는 루트 경로 변경 하는 경우 구성 된 폴더)에 파일을 붙여 넣습니다.
    C:\inetpub\PSDSCPullServer\bin\
  4. 응용 프로그램의 Web.config 파일에서 MaxVerPages PreferredVerPages 매개 변수를 추가 하 여 버전 저장소의 크기를 구성 합니다. 참고: Web.config의 다음 위치 (또는 사용자 지정 폴더)에 있습니다.
    C:\inetpub\PSDSCPullServer
     

    예를 들어, MaxVerPages24576로 설정 되 면 버전 저장소 크기 다음과 같이 설정 됩니다.

    24576 * 16 = 393 MB 32 비트 모드

    24576 * 32 = 786 MB에서 64 비트 모드로

    PreferredVerPages 에 대 한 권장된 값 MaxVerPages 값의 80% 정도입니다. 사용자 지정 값을 지정 하지 않으면 다음과 같은 기본 값이 사용 됩니다.

    MaxVerPages = 1024

    PreferredVerPages = 1024

    예를 들어, 다음 값을 설정 합니다.

    < / managementOdata > < appSettings >   < 키 추가 = "MaxConcurrentRequests" 값 = "10000" / >   < 키 추가 = "MaxRequestsPerTimeslot" 값 = "10000" / >   < 키 추가 = "TimeslotSize" 값 = "1" / >   <!--->   < 키 추가 = "dbprovider" 값 = "ESENT" / >   < 키 추가 = "dbconnectionstr" 값 = "C:\Program Files\WindowsPowerShell\DscService\Devices.edb" / >   <!--->   <!-   < 키 추가 = "dbprovider" value="System.Data.OleDb" / >   < 키 추가 원본 "dbconnectionstr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data = = C:\Program Files\WindowsPowerShell\DscService\Devices.mdb;" / >   -->   < 키 추가 = "ConfigurationPath" 값 = "C:\Program Files\WindowsPowerShell\DscService\Configuration" / >   < 키 추가 = "ModulePath" 값 = "C:\Program Files\WindowsPowerShell\DscService\Modules" / >   < 키 추가 = "RegistrationKeyPath" 값 = "C:\Program Files\WindowsPowerShell\DscService" / > < 키 추가 = "MaxVerPages" 값 = "24576" / >   < 키 추가 = "PreferredVerPages" 값 = "19600" / > < / appSettings >

  5. 변경 내용을 저장 한 다음 IIS를 다시 시작 합니다.

해결 방법 2: 여러 개의 작업자 프로세스 "PSWS" 응용 프로그램 풀 구성

IIS 작업자 프로세스의 수를 1로 다시 설정 합니다. 이렇게 하려면, 다음 단계를 수행하십시오.

  1. IIS 관리자를 열고 응용 프로그램 풀 노드를 엽니다.
  2. PSWS마우스 오른쪽 단추로 클릭 한 후 고급 설정을 클릭 합니다.
  3. 프로세스 모델 구역에서 최대 작업자 프로세스 수1로 설정 합니다.

해결 방법 3: 새 프로세스에 액세스할 수 없습니다 데이터베이스 IIS W3WP.exe 프로세스를 재활용 하는 경우

재생 상태가 사용 안 함 설정을 사용 합니다. 이렇게 하려면, 다음 단계를 수행하십시오.

  1. IIS 관리자를 열고 응용 프로그램 풀 노드를 엽니다.
  2. PSWS마우스 오른쪽 단추로 클릭 한 후 고급 설정을 클릭 합니다.
  3. 재활용 섹션에서 True재활용 상태가 사용 안 함 을 설정 합니다.

참조


ESE에 대 한 자세한 내용은 다음 Microsoft 문서 문서를 참조 하십시오.

확장 가능한 저장소 엔진

버전 저장소 설정 및 사용을 모니터링 하는 방법에 대 한 자세한 내용은 다음 디렉터리 서비스 팀 블로그 문서를 참조.

버전 저장소를 호출 하 고 그들은 몽 땅 잡아 버킷