2010-12-30 2 views
0

가장 중요한 두 개의 사이트 (IIS7의 ASP.NET)를 실행중인 클라이언트의 웹 서버에 장애 방지 기능을 구현하려고합니다. 어떤 w3wp 프로세스가 90 % + CPU를 1 분 이상 사용하면 (즉, 모든 방문자에게 임시로 503 서비스를 사용할 수 없음을 알리는 메시지를 생성합니다) 내 로컬 테스트를 기반으로하여 응용 프로그램 풀을 제한하도록 설정합니다. 1 분 이내에 다시 시작하십시오. CPU 사용량을 늘리는 프로세스로 인해 서버 전체를 일정 시간 동안 사용하지 않는 것보다 훨씬 나은 해결책입니다.IIS가 중단 된 ASP.NET 세션을 다시 활성화하십시오.

이것은 내 로컬 IIS7 인스턴스에서 수행 중일 때 요청이 "Kill.aspx"를 호출하면 사이트가 백업 될 때도 IIS가 원인이 된 세션을 제공하지 않는 것으로 나타났습니다. 매달려. 다른 세션에서 테스트 사이트를 다시 시작할 수는 있지만 "살인자"브라우저에서 쿠키를 삭제하자마자 다시 사이트에 접속할 수 있습니다.

따라서 IIS가이를 막으려 고 시도하는 악의적 인 행동은 심지어 약간 결정된 상대방에게는 효과가 없습니다. 대부분의 경우 배설물이 팬에 부딪치게되면 해당 페이지를 요청한 사용자의 잘못이 아니라 코딩/구성 오류가 발생합니다.

따라서 이론적 인 사용자는 쿠키를 삭제해야 사이트에 다시 액세스 할 수 있다는 사실을 알지 못하므로이 기능을 해제하고 싶습니다. 이것이 가능할 수있는 방법에 대한 아이디어는 정말 고맙겠습니다.

답변

1

Yous는 In-Proc 대신 ASP.Net 세션 StateServer를 사용해야합니다 (자세한 내용은 msdn 참조). 이렇게하면 세션이 다른 프로세스에서 실행되며 IIS 충돌의 영향을받지 않습니다.

+0

이미 SQL 세션 상태를 사용 중입니다. 세션을 잃어버린 것이 아니라, 수동으로 쿠키를 재설정하고 해당 세션이 죽은 요청을 보내는 세션이었던 경우 세션을 분리해야합니다. 응용 프로그램. 다른 모든 세션은 괜찮지 만 Kill.aspx를 호출하는 세션은 응용 프로그램이 다시 작동하더라도 작업 페이지를 가져올 수 없습니다. – tags2k

0

"기능"을 해제 하시겠습니까? 작업자 프로세스가 재설정되면 (그리고 in-proc 세션을 사용하는 경우) 세션은 재설정 될 때 날아갑니다.

세션 저장소를 상태 서버 나 다른 프로세스 외 시나리오로 옮겨 조사하는 것이 좋습니다.

또한 하나의 프로세스가 종료되어 다른 프로세스가 계속 콘텐츠를 제공하는 경우 여러 작업자 프로세스 (일명 : 웹 가든)를 사용하도록 응용 프로그램 풀을 설정하려고 할 수 있습니다.

다음으로 다른 옵션으로 여러 웹 서버를 설정하고 부하를 분산 할 수 있습니다.

마지막으로, 앱을 프로파일 링하여 앱이 무언가로 돌아가고 있는지 정확히 알 수 있습니다. 내 생각 엔이 아이디어로 덮어 버리는 수많은 코드 문제가 있다는 것입니다.

관련 문제