Asp.net MVC 웹 사이트를 만들고 공유 호스팅 공급자에서 호스팅했습니다. 내 웹 사이트는 매우 일반적인 아이디어를 둘러싸고 있기 때문에 언젠가는 동시 사용자 수가 많을 수 있습니다.
그래서 웹 사이트에서 부하시 성능을 테스트하는 방법을 생각하고있었습니다. 100 명 또는 1000 명의 사용자가 동시에 온라인 상태이고 웹 사이트를 서핑 할 때 사이트의 성능은 어떻게됩니까? 또한 LINQ 쿼리가 제대로 작성되었는지 여부를 이해할 수 있습니다.
답변
우선, 적절한 용어는 스트레스 테스트 입니다. 웹 사이트 스트레스 테스트를위한 솔루션은 꽤 많으며, 권장하는 호스팅 솔루션은 loadimpact 입니다. 그들이하는 일은 전 세계 여러 서버의 요청으로 사이트를 공격하고 사이트가 스트레스를 어떻게 처리했는지 분석 보고서를 제공하는 것입니다. 무료 테스트를 통해 일반적인 아이디어를 얻을 수 있지만 추가 비용을 지불하려면 가입비를 지불해야합니다.
이러한 종류의 테스트는 방문자의 관점에서만 웹 사이트를 테스트합니다.보다 구체적인 정보는 응용 프로그램을 로컬로 프로파일 링해야하며 이전 답변에 추가 할 것이 더 이상 없습니다 .Apache JMeter 도 사용 하고 있습니다. .
마지막으로 성능에 민감한 웹 개발자는 YSlow를 살펴보십시오 .
YSlow는 JavaScript를 사용하여 동적으로 작성된 구성 요소를 포함하여 페이지의 모든 구성 요소를 검사하여 웹 페이지 성능을 분석합니다. 페이지 성능을 측정하고 개선을위한 제안을 제공합니다.
YSlow for Firefox는 Firefox 용 Firebug 웹 개발 도구에 통합되어 있습니다.
종종 자바 스크립트가 실제 병목 현상이되고 백엔드 코드 나 데이터베이스가 아니라는 것을 알게됩니다. 물론 잘못 작성된 쿼리는 성능이 크게 저하 될 수 있지만 이러한 문제를 처리 한 후에는 항상 YSlow를 실행하고 제안을 따르십시오. 이는 생명의 은인입니다.
더 읽을 거리 :
물론 StackOverflow에!
답변
공유 호스팅을 사용 중이므로 응용 프로그램이 한 번에 액세스 할 수있는 리소스 수준을 보장 할 수 없으므로 성능을 올바르게 나타내는 테스트를 실행할 수 없을 것입니다.
그러나 그 상황에서 내가 할 일은 전용 상자에서 테스트를 독립적으로 시작하여 시작하는 것입니다 (이것은 자신의 랩톱 일 수 있습니다). Visual Studio Load Test suite 또는 JMeter (개인적으로 견딜 수없는)와 같은 도구를 사용하고 응용 프로그램을 통한 일반적인 경로를 나타내는 일련의 테스트를 작성하십시오 (사용을 통해 일반적인 경로에 대한 정보를 얻을 수 있어야 함) 이 기능을 사용할 수없는 경우에는 가능성이 있다고 생각되는 것을 사용할 수 있지만 정확한 기준을 제공하지는 않습니다. 그런 다음 램프 업 테스트를 수행하고 1 명의 사용자부터 시작한 다음 예상 최대로드에 도달 할 때까지 사용자를 천천히 추가하십시오. 그것은 당신의 시스템이 전체적으로 얼마나 잘 견디는 지 보여줄 것입니다 (개인적으로 헤드 룸을 확보하기 위해 조금 더 나아가기를 좋아합니다).
마지막으로 테스트를 실행하는 동안 ANTS 성능 프로파일 러와 같은 프로파일 링 도구를 실행해야합니다 (일부 오버 헤드가 추가됨). 이렇게하면 오래 실행되는 쿼리와 메서드를 식별하여 응용 프로그램이 실제로 느린 위치에 대한 포인터를 제공 할 수 있습니다 (한 가지 팁 : 실제로는 실제로 어디에 있을지 거의 생각하지 않습니다).
내가 처음으로 말했듯이, 당신이 가질 주요 문제는 공유 호스팅에 있다는 것이므로 현실적인 라이브 환경 에뮬레이션을 수행하는 것은 거의 불가능합니다. 그러나 응용 프로그램이 약속 된 리소스와 비슷한 환경에 상당한 양의 헤드 룸이있는 경우 예상하기 전에 환경의 한계에 도달하더라도 코드가 호스팅에서 유지 될 수 있다는 확신이 있어야합니다.
답변
JMeter 또는 The Grinder 와 같은 도구를 살펴볼 수 있습니다 .
지금까지 JMeter 만 사용했으며 테스트 계획을 매우 쉽게 작성할 수있는 그래픽 도구입니다. 여러 스레드를 사용하여 여러 사용자를 시뮬레이션 할 수 있습니다. 브라우저를 JMeter 프록시와 연결하고 실제 작업을 수행하여 사이트의 일반적인 사용법을 기록 할 수 있으므로 요청을 처음부터 직접 작성할 필요가 없습니다. 그라인더는 내가 정확하게 기억하면 스크립트 기반이며, 잘 맞을 수도 있습니다.
답변
또한 스트레스 테스트를 위해 Loadimpact를 좋아합니다. 내 사이트에서 빠른 확인을 위해 사용하는 한 가지 방법은 Apache Bench입니다. 최종 테스트를하고 싶을 때 유료 서비스를 찾게 될 것입니다.
저의 작업은 WebLoads에 투자했는데, 이는 매우 비싸지 만 모든 사이트를 내부적으로 테스트 할 수있게합니다. 그래도 추천하지 않습니다.
답변
로드 테스트는 예상보다 많은 시간이 걸리고 지루한 작업이므로 수동으로 수행 할 수 있다고 생각하지 않습니다. 많은 사용자가 사용할 수있는 Load Runner를 사용할 수 있습니다.
답변
AHK (Autohotkey) 스크립트는 사용자를 시뮬레이션 할 수 있습니다. 하루 종일 달립니다.
여러 상자에서 실행하여 몇 명의 사용자를 시뮬레이션 할 수 있습니다. 좋은 점은 테스트 스타일이 완전히 제어한다는 것입니다. 1 개의 AHK 스크립트가 보고서 기능을 스팸으로 분류하여 다른 기능의 사용자에게 영향을 미치는지 확인할 수 있습니다.
AHK의 스레딩 기능에 익숙하지는 않지만 수천 명의 사용자를 시뮬레이션하는 것이 어려울 수 있습니다. 보유한 컴퓨터 수에 제한이있을 수 있습니다.