2009-08-24 1 views
4

ASP.NET MVC 응용 프로그램의 메모리 세션에서 하나의 작업자 스레드 만 올바르게 사용할 수 있다는 의미입니까? 이것은 내 응용 프로그램에서 병렬 처리를한다는 것을 의미합니까 (동시 요청을 생각 하시겠습니까)? 내 신청서는 한 번에 한 요청 만 접수합니까?ASP.NET 싱글 워커 스레드? (메모리 세션에서)

편집 :

If the application uses in-process session variables, 
the application will not function correctly, because the same user requests 
are picked up by different worker processes that 
do not share the same session details. 

그래서이 메모리 내 세션은 1 개 작업자 스레드를하거나 할 수 없음을 의미 다음 IIS7 웹 사이트에 따르면? IIS7 포럼의 here도 참조하십시오.

+0

프로세스와 스레드는 ASP.NET과 IIS의 컨텍스트에서 다른 것을 의미합니다. 여러 프로세스를 사용하면 여러 세션 저장소가 있음을 의미합니다. –

답변

3

응용 프로그램이 한 번에 여러 요청을받습니다. 여기서 편집 및 설명을 토대로 스레드 및 세션 상태와 달리 Web Gardens 및 세션에 대한 정보를 찾고 있습니다.

웹 가든은 여러 프로세스를 사용하며 세션 상태와 관련하여로드 밸런서처럼 작동합니다. 각 프로세스는 별도의 메모리 세션 저장소를 갖습니다. IIS는 사용 가능한 모든 프로세스에 요청을 보냅니다. 프로세스가 세션 상태를 공유하지 않기 때문에 세션 공급자가 모든 웹 가든 프로세스간에 공유되는 경우에만 세션 사용이 실제로 작동합니다.

웹 가든은 세션 상태로 SQL Server와 같은 것을 사용하고 특정 CPU/코어와 친 화성을 갖고 싶을 때만 의미가 있습니다. 스레드 수를 늘릴 수 있기 때문에 웹 가든을 사용하는 것보다 일부 사용자에게 더 적합한 최적화가 될 수 있습니다. 그러나 일부 응용 프로그램은 특정 작업 부하 또는 응용 프로그램 특성으로 인해 웹 정원에서 더 잘 수행 될 수 있습니다. 테스트에 웹 가든을 사용하면로드 균형 조정에서 발생할 수있는 잠재적 인 문제를 해결하는 데 도움이 될 수 있습니다.

.NET ThreadPool을 사용하며 기본적으로 20 개의 스레드가 있다고 생각합니다. 서버에 들어오는 각 요청은 별도의 스레드에서 처리 될 수 있습니다. ASP.NET performance guidelines에는이 주제에 대한 정보가 있습니다. 메모리 세션에서

+0

메모리 내 세션에 문제가 있습니까? 내가 아는 한 세션은 동일한 스레드에 있어야하거나 모든 것이 터집니다. – Alex

+0

스레드가 세션에 연결되는 이유를 알 수 없습니다. 세션 ID는 세션 데이터를 검색하기에 충분해야하므로 동일한 스레드에 매핑 할 필요가 없습니다. 세션 데이터는 '메모리에 있더라도'별도로 저장됩니다. 동일한 API가 다른 세션 공급자를 연결하는 데 사용됩니다. –

+0

IIS7 사이트 및 포럼 링크에서 질문이 업데이트되었습니다. 프로세스 (메모리에서) 세션은 작업자 스레드에서 정보를 공유하지 않습니다. 이 잘못된 정보입니까? – Alex

-1

는 일반적으로 한 번에,하지 단일 작업자 스레드 하나의 프런트 엔드 웹 서버가 있어야 의미 : D를

하나 개의 시스템에 세션에 저장된 모든 정보가 아니라고되는 이유 다른 쪽에서 사용할 수 있습니다. 프론트 엔드 웹 서버가 두 개인 경우 프록시 또는 방화벽이 웹 서버에 임의로 요청을 할당하는 "로드 균형 조정"을 수행하면 문제가 발생합니다. 즉, 사용자는 항상 동일한 서버로 전송되는 소위 말하는 "고정 세션"으로 문제를 쉽게 해결할 수 있습니다.

- 오진

+0

후속 조치 : 귀하의 컴퓨터에서 '웹 가든'처리를 활성화 한 다음 한 서버의 다중 CPU에서 처리 할 수없는 이유는 무엇입니까? 이로 인해 임의의 세션 손실이 발생합니다. – Alex

+0

저의 이해는 웹 가든이 기계에 여러 프로세스를 생성한다는 것입니다. 각 프로세스에는 다른 세션 상태 저장소가 있습니다. –