programing

ASP.NET 웹 가든 - 얼마나 많은 작업자 프로세스가 필요합니까?

coolbiz 2023. 7. 9. 21:56
반응형

ASP.NET 웹 가든 - 얼마나 많은 작업자 프로세스가 필요합니까?

ASP.NET 웹 응용 프로그램에 허용할 작업자 프로세스 수를 결정하는 가장 좋은 방법은 무엇입니까?

관리하는 서버 하나에서 새 AppPool을 만드는 작업은 기본적으로 10개(최대)의 작업자 프로세스로 구성됩니다.다른 사람들은 정상 설정이 1이라고 제안합니다.

다중 작업자 프로세스는 어떤 문제를 해결하고 몇 가지를 결정하기 위한 기술은 무엇입니까?

작업자 프로세스는 여러 exe에 걸쳐 웹 사이트의 실행을 세분화하는 방법입니다.이 작업을 수행하는 데는 몇 가지 이유가 있습니다. 하나는 작업자 중 한 명이 실행 시간 문제로 인해 방해를 받더라도 다른 작업자들은 영향을 받지 않습니다.예를 들어 HTML 요청이 수신되어 프로세스가 무로 실행되면 해당 작업자 프로세서에서 처리 중인 다른 요청만 삭제됩니다.또 다른 예는 한 요청으로 인해 동일한 작업자가 처리하는 다른 스레드가 차단될 수 있다는 것입니다.

필요한 만큼 부하 테스트를 수행합니다.앱을 세게 누르고 하나로 무슨 일이 일어나는지 보세요.그 다음에 조금 더 넣고 다시 치세요.어느 시점에서 머신 네트워크, 디스크, CPU 및 RAM이 진정으로 포화 상태에 이를 것입니다.그때가 당신이 균형을 제대로 잡고 있다는 것을 알게 되는 때입니다.

또한 machine.config 파일을 통해 작업자 프로세스당 사용되는 스레드 수를 제어할 수 있습니다.나는 그 열쇠가 maxWorkerThreads라고 생각합니다.

세션을 사용하면 세션 상태가 작업자 프로세스 간에 공유되지 않습니다.저는 일반적으로 세션을 피하는 것을 권장하지만 고려해야 할 사항입니다.

모든 면에서 각 작업자 프로세스를 개별 웹 서버로 간주할 수 있습니다.동일한 박스에서 실행된다는 점만 제외하면 됩니다.

메모리 누수

또 다른 가장 큰 장점은 메모리 누수를 처리하는 것입니다.코드를 최적화하려고 아무리 노력해도 프레임워크 자체와 다른 타사 라이브러리에서 메모리 누수가 발생할 수 있습니다.우리는 애플리케이션이 결국 매우 높은 메모리에 도달하고 메모리 예외를 제공하지 않기 시작한다는 것을 알게 되었습니다.

따라서 작업자 프로세스의 최대 가상 메모리 제한을 1GB로 설정하고 여러 프로세스를 실행할 수 있도록 해야 했습니다.단일 작업자 프로세스에 대해서도 최대 가상 제한을 설정할 수 있지만, 작업자 프로세스가 재활용될 때 작업자 프로세스가 제대로 속도를 낼 때까지 모든 요청이 느려지기 때문에 속도가 급격히 느려집니다.애플리케이션에 내부 캐싱(Entity Framework Query Cache, 일부 개체 풀)이 있기 때문에 이러한 각 기능은 애플리케이션 시작 속도를 늦춥니다.단일 작업자 과정이 가장 큰 피해를 주는 부분입니다.

작업자 프로세스가 여러 개인 경우 재활용 모드의 프로세스 중 하나만 속도가 느리지만 다른 프로세스는 속도를 유지합니다.

작업자 프로세스가 많은 또 다른 경우는 응용 프로그램에 병렬화를 방지하는 잠금이 포함되어 있는 경우입니다. GDI+ 기반 이미지 처리가 그 예 중 하나입니다.

는 제 문제에 대한 해결책을 찾으려 할 때 그것을 발견했습니다.

언급URL : https://stackoverflow.com/questions/2151251/asp-net-web-garden-how-many-worker-processes-do-i-need

반응형