UNC 공유의 IIS 사이트 : 문제가 있습니까?


7

외부 하드웨어를 통해 부하가 분산되고 홈 디렉토리가 UNC 경로 인 IIS 사이트가있는 기존 ASP Classic 솔루션으로 작업하고 있습니다.이 설치의 다음 문제가 현재 존재한다고 들었습니다 :

  1. UNC 경로를 홈 디렉터리로 사용하는 경우 IIS의 어딘가에 특정 유형의 특정 파일에 "캐시"되는 인덱스가 있으며 기본값 인 50 개가 캐시에없는 페이지에 대한 후속 요청은 404를 반환합니다.
  2. UNC 경로를 홈 디렉토리로 사용하면 IIS 사이트를 시작할 때 위에서 언급 한 "캐시"가 채워지기 시작합니다. 캐시가 채워지고, 이는 IIS 사이트가 시작된 후 최대 30 분 동안 거대한 사이트 (15,000 개의 .asp 파일)를 사용할 수 없음을 의미합니다.
  3. UNC 경로를 홈 디렉터리로 사용하는 경우 특정 동시 요청 수가 사이트에 동시에 발생하면 Windows는 "서버 당 네트워크 BIOS 명령 제한"에 도달하고 제한을 초과하는 모든 요청은 대기해야합니다 IIS가 서버에 "세션을 닫을 때까지". 한계는 100 개이며 구성 할 수 없다고 들었습니다.

이제이 모든 것이 조금 이상합니다. 기본 설정으로 새로운 Windows 2003 서버를 설정하고 서버의 공유를 IIS 사이트의 홈 디렉터리로 사용하여 15,000 개의 .asp 파일로 ASP 클래식 응용 프로그램을 호스트하는 경우 이 실제로 실행됩니다. 문제가 있습니까? 그렇다면 아키텍처를 변경하지 않고이를 해결할 수있는 방법이 있습니까?

("로드 균형 조정"이 중요한 이유는로드 균형 조정이 파일이 서버의 공유에있는 이유이기 때문에로드 균형 조정이 필요하지 않으면 파일이 로컬에있을 수 있습니다 디스크)

5

예, 가능하지만 문제가 발생할 수 있습니다.

ASP.NET이 ASPX, ASCX 및 기타 콘텐츠 페이지를 어셈블리로 컴파일 할 때 ASP.NET은 파일 사이의 종속성을 모니터링하기 위해 많은 FileSystemWatchers를 만들어 파일이 변경 될 때 다시 컴파일 할 수 있도록합니다. 이것들은 NetBIOS 자원을 먹는다.

또한 File.Exists 또는 Directory를 할 때마다.사이트의 서비스 경로에 대한 호출 또는 다른 종류의 IO가 존재하여 NetBIOS 제한에 대한 요구가 증가합니다.

레지스트리를 통해 NetBIOS 제한값을 기본값보다 높게 설정할 수 있습니다.

디렉터리 및 파일이 비교적 적은 소규모 사이트의 경우 컴파일 된 어셈블리를 시작한 후에도 ASP.NET이 계속 실행되므로 UNC 공유를 매우 성공적으로 실행할 수 있습니다. 그러나 추가 할 디렉토리와 파일이 많을수록 문제가 커질 수 있습니다.

맘모스 사이트 (수백 개의 디렉토리와 ASPX/ASCX 파일)를 실행하려고 시도했는데 NetBIOS 한도에 도달 한 충분한 URL에 액세스 할 때까지 몇 분 동안 정상적으로 실행되고 이후의 모든 페이지보기가 예외. 우리는 robocopy 출판 솔루션을 사용해야 만했습니다.

결국 사이트가 충분히 작고 NetBIOS 설정이 효과적으로 실행되는지 테스트해야합니다. 테스트 사이트에서 스파이더를 사용하여 컴파일하거나 액세스 할 수있는 모든 것이 적어도 한 번은 확실하다는 것을 확신 할 수 있습니다.

  0

결국 NetBIOS 제한 등을 조정 한 후에 모든 것이 부드럽게 실행됩니다. FileSystemWatchers 및 ASP 컴파일의 시작 대기 시간은 용인 할 수있는 것으로 나타났습니다. 05 mar. 092009-03-05 08:00:37


1

답변 3의 경우 네트워크 BIOS 명령 제한을 변경할 수 있습니다. 그것의 아주 쉬운 레지스트리 수정 수정 : http://support.microsoft.com/kb/810886/en-us

나는 그 특별한 문제를 직접 실행했습니다.


2

IIS와 UNC 간의 상호 작용에 대한 직접적인 질문은 확실하지 않지만 파일 공유 이외의 다른 고려 사항을 고려하여 바쁜 사이트 (로드 균형 조정이 필요할만큼 바쁜 항목)를 제안합니다.

네트워크 (예 : 파일 공유)를 통해 IIS에서로드 된 ASP는 성능에 부정적인 영향을 미칩니다 (대기 시간).

robocopy와 같은 것을 사용하여 모든 부하가 분산 된 서버를 중앙 마스터와 동기화하여 유지할 것을 제안합니다. 즉, 단일 마스터 서버 (또는 단일 마스터 위치)에 배포 한 다음 파일을로드 밸런서의 풀에있는 각 슬레이브에 robocopy합니다.

이것은 설명하는 이상한 UNC 문제를 제거 할뿐만 아니라 ASP 페이지를로드 할 때 네트워크가 손상되는 것을 방지하여 성능을 향상시켜야합니다. 나는 당신이 이것을한다면 상당한 성능 향상을 기대합니다.

  0

그래, 나는 동의한다. 사실, RoboCopy보다 DFS를 선호합니다. 더 많은 구성이 있지만 잠 못 이루는 밤은 적습니다. 하지만 평상시처럼 외부 요인에 따라 이러한 특정 설정이 결정됩니다. 24 sep. 082008-09-24 07:15:24