저는 개발 서버를 설정 중이며 Mono를 사용하여 ASP.NET 페이지를 제공하도록 설정하고 싶습니다. Cherokee와 Mono를 사용할 계획입니다(http://www.cherokee-project.com/doc/cookbook_mono.html) Unix 기반 스택과 Windows 기반 스택을 비교하는 성능 테스트를 수행한 사람이 있는지 궁금합니다.
답변1
Mono/Linux와 .NET/Windows 워크로드를 테스트할 때 중요한 것은 런타임 환경만이 아니라는 점을 기억해야 합니다.
Linux는 어떤 면에서는 Windows보다 성능이 뛰어납니다(대부분의 IO 및 네트워크 작업은 유사한 C 프로그램에서 더 빠른 경향이 있습니다). 동시에 .NET에는 고급 가비지 수집기와 고급 JIT 컴파일러가 있습니다.
클래스 라이브러리의 경우 실제로 사용하는 코드 경로에 따라 다릅니다. JacksonH가 이전 게시물에서 말했듯이 한 구현에서는 최적화되었지만 다른 구현에서는 최적화되지 않은 코드 경로에 액세스할 수 있으며 그 반대의 경우도 마찬가지입니다.
ASP.NET 워크로드에서는 기본 설정이 들어오는 모든 요청을 단일 "작업자" 프로세스로 라우팅한다는 점을 기억해야 합니다. mod_mono와 Cherokee는 비슷한 접근 방식을 사용합니다.
(원천:mono-project.com)
적어도 Apache에서는 애플리케이션 작업 부하를 여러 작업자 스레드에 분산할 수 있는 메커니즘을 지원합니다. 이는 프로세스 내 잠금을 방지하고 작업할 수 있는 완전한 스레드 풀을 제공하므로 부하가 높을 때 유용합니다.
(원천:mono-project.com)
이 설정을 구성하는 방법에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
답변2
이것은 다소 대답이 없습니다. 그러나 여기에는 실제 대답이 없습니다. 불행히도 이것은 응용 프로그램에 따라 크게 달라집니다. 귀하의 애플리케이션에서는 Mono가 잘하는 일을 겪을 수도 있고, 제대로 구현되지 않았거나 버그가 있는 일을 과도하게 사용할 수도 있습니다. Mono가 IIS보다 X배 느리거나 빠른 경우는 아닙니다.
제가 제안하는 것은 두 개의 서로 다른 EC2 인스턴스(Windows 하나와 Mono 하나)에 애플리케이션을 배포하고 그곳에서 테스트하는 것입니다. Mono 인스턴스에서 심각한 문제를 발견한 경우 이를 보고해 주시면 문제를 개선하기 위해 최선을 다하겠습니다.
하지만 개인적인 경험을 통해 Mono aspx가 정말 잘 작동한다고 말씀드릴 수 있습니다.