배경 정보 : 파일 복제는 우리가 부하 균형 (8) 다른 IIS에 걸쳐 대규모의 트래픽이 높은 ASP.NET 웹 응용 프로그램을 가지고,서버 별의 web.config는
현재 절름발이 서버. 사이트의 특성상 .aspx 파일과 .ascx 컨트롤의 사소한 변경은 하루 종일 자주 발생하며 테스트를 거쳐 실제 게시 된 후 xcopy 배포를 통해 공개 웹 서버 각각에 복제됩니다. 10 분.
물론 각 서버에 전체 사이트의 중복 사본이 있어야하기 때문에 이것은 매우 비효율적이며 게시 지연 시간을 10 분 단축하고 싶습니다.
가능한 개선 :
공유 스토리지에서 호스팅 우리는 이제 원격 스토리지는 로컬 드라이브라고 믿는 각 서버로, 중앙에서 전체 사이트를 호스팅에 iSCSI 인터페이스를 중앙 저장소를 사용하는 옵션이 있습니다. 게시는 즉각적이고 시스템 전체에 적용됩니다.
참고 : 사이트 구조에 많은 다른 디렉터리가 있으므로 ASP.NET에서 FileSystemWatcher를 사용하여 변경 사항을 모니터링하고 SMB 최대 명령 수를 확인해야하므로 UNC 공유에서 드라이브를 호스팅 할 수 없습니다. 빨리 도달했습니다. 예, MaxCmds 및 MaxMpxCt 레지스트리 설정에 대해 알고 있습니다.
문제점 :의 Web.config 변경 트리거 대규모 재 컴파일
우리가을 forsee 문제는 파일 시스템 구조에 어떤 변화가 발생, 거의 모든 컴파일에서 .aspx가 발생하거나 재 컴파일해야 할의 .ascx 수 있다는 것입니다 대기중인 요청 및 서버가 작동 중지 된 것으로 인식합니다. 대부분의 리소스는 시스템 전체에서 사용되지 않으므로 변경시이를 다시 컴파일하면 리소스가 거의 없어집니다. 사이트의 모든 페이지에서 사용되는 전역 마스터 페이지가이 문제를 일으킬 수 있지만 코드로 쉽게 관리 할 수 있습니다.
주요 원인은 web.config 파일입니다. web.config 파일을 변경하면 전체 웹 응용 프로그램이 재생되고 재 컴파일이 발생합니다. 따라서 현재 web.config 변경 사항을 복제하지 않습니다. web.config를 변경하려면로드 밸런서에서 웹 서버를 가져 와서 변경 사항을 적용 (테스트) 한 다음 정크 요청이로드 밸런서에 다시 배치되기 전에 서버를 예열해야합니다.
그러나 나머지 웹 응용 프로그램의 디렉토리 구조와 마찬가지로 중앙 집중식 저장소에 web.config 파일이있는 경우 파일 사본이 하나뿐이므로 개별 서버를 더 이상 패치 할 수 없으며 예열 될 수 없습니다.
[질문
의 Web.config라는 이름의 파일이 아닌 다른 소스로부터의 행진 주문을하는 ASP.NET 웹 응용 프로그램을 얻을 수있는 방법이 있나요?
- default.aspx에
- Global.asax에
- 웹 ServerA.config
- 웹 서버 B :
이상적으로 예를 들어, 서버 당 하나 개의 파일이있을 것입니다.설정
- ... 이름 "의 Web.config는"어쨌든 정의
범위의 아웃
상황이 그냥 그래서 내가 디버그, 테스트에 대해 서로 다른 appSettings는 있고, 사는 방법을 요구하고 있지 않다, 분명히입니다. 이 문제를 다루는 다른 주제가 있으며, 모든 web.config 파일은 대부분 동일하게 유지됩니다. 업데이트가 수행 될 때 유일한 차이점이 필요합니다.
appSettings 정보에는 web.config가 사용되지 않습니다. 이것은 어셈블리 참조, httpHandler 정의 및 데이터베이스화할 수없는 다른 system.web 설정과 같은 중요한 요소를위한 것입니다.
업데이트
난의 Web.config에 대한 레지스트리를 검색했는데, 나는 최근에 내가 분명히 많이 할의 Web.config 파일을 편집했다고 언급 응용 프로그램을 제외하고 아무것도 찾을 수 없습니다. 도움이 안돼.
II6 또는 IIS7을 사용하고 있습니까? –
현재 IIS6이지만, IIS7 로의 업그레이드는 장거리 계획에 있습니다. IIS7이 필요한 솔루션은 제 의견으로는 괜찮을 것입니다. –