2011-09-23 8 views
1

현재 웹 응용 프로그램을 사용하고 있으며 .net 클래스를 사용하여 사용자 지정 워크 플로가 구현되어 있습니다. 이 워크 플로우에서 일부 데이터베이스 값을 업데이트하고 특정 비즈니스 로직을 기반으로 사용자에게 전자 메일을 보냅니다.멀티 스레드 대 Asp.net 3.5 싱글 스레드

시스템에는 400 명의 동시 사용자와 10000 명의 사용자가 있으며 사용자는 최대 52 개의 구매 요청 라인으로 구매 요청을 작성할 수 있습니다. 이 애플리케이션의 평균 구매 요청 데이터로드는 10 분 안에 10 -15 구매 요청입니다. 사용자는 ASP.net 3.5를 사용하여 구현 된 웹 응용 프로그램을 사용하여 일부 작업을 수행하고 사용자 입력에 따라 워크 플로를 실행해야합니다.

내 질문으로 인해 우리는 UI 스레드에서 떨어져 별도의 스레드에서 워크 플로우를 실행하려고 우리가 가지고있는 작업 부하,

이다. UI 슬라이스를 동일한 UI 스레드에서 실행해야하는 것이 좋을까요?

답변

2

지난 번 비슷한 시나리오에서 작업해야만 UI에서 완전히 분리 된 응용 프로그램이라는 워크 플로가있었습니다. 우리가 한 이유는 UI에서 어떤 것이 실패 할 경우 워크 플로에 영향을 미치지 않으며 그 반대의 경우에도 영향을 미치지 않기 때문입니다. 그 별도의 응용 프로그램은 멀티 스레딩이었습니다. 일부 작업을 마친 후에 프로젝트에서 제외되었지만 동료가 더 많은 작업을 수행했음을 알고 있으며 동시에 두 가지 추가 콘솔 응용 프로그램을 추가했습니다. 너는 절대로 조심할 수 없다.

2

웹 응용 프로그램을 다룰 때 스레딩에서 유의해야 할 사항은 "이 작업을 완료하는 데 시간이 오래 걸릴 것입니다"입니다. Not이면 스레드를 스핀 오프 할 이유가 없습니다. 스레딩은 특히 어쨌든 결과를 기다려야 만하는 경우 마술처럼 앱을 빠르게 작동시키지 않습니다.

작업에 상당한 시간이 소요되는 경우 백그라운드 스레드로 회전하면 IIS 작업자 프로세스를 재활용하고 새로운 들어오는 요청을 수락 할 수 있습니다.

더 많은 스레드를 돌리면 시스템에 더 많은 부하가 발생할 수 있습니다. 이제는 2 배나 많은 스레드를 실행하고 각 스레드는 자체 스택과 다른 리소스를 사용하고 있기 때문입니다. 당신이 그것에서 실제 이익을 얻는 경우에만 의미가 있습니다.