[web-applications] 웹 응용 프로그램에서 스트레스 테스트를 수행합니까?

과거에는 웹 응용 프로그램을 스트레스 테스트하기 위해 Microsoft 웹 응용 프로그램 스트레스 도구와 Pylot을 사용했습니다. 간단한 홈페이지, 로그인 스크립트 및 사이트 연습 (전자 상거래 사이트에서 장바구니 및 결제에 몇 가지 항목을 추가)을 작성했습니다.

소수의 개발자로 홈페이지를 강타하면 거의 항상 큰 문제가 발생합니다. 더 많은 확장 성 문제는 두 번째 단계에서, 그리고 출시 이후에는 더 커질 것입니다.

내가 사용한 도구의 URL은 Microsoft Homer (일명 Microsoft Web Application Stress Tool )와 Pylot 입니다.

이 도구들에 의해 생성 된 보고서는 제게 의미가 없었으며, 사이트가 어떤 종류의 동시로드를 지원할 수 있는지 알아 내기 위해 많은 시간을 할애했습니다. 가장 멍청한 버그와 병목 현상이 항상 발생하기 때문에 항상 가치가 있습니다 (예 : 웹 서버 구성 오류).

당신은 무엇을했으며, 어떤 도구를 사용했으며, 접근 방식으로 어떤 성공을 거두었습니까? 나에게 가장 흥미로운 부분은 스트레스 테스트 응용 프로그램에서보고 한 숫자에서 앱이 지원할 수있는 동시 사용자 수를 계산하기위한 일종의 의미있는 공식입니다.



답변

JMeter에 대한 또 다른 투표가 있습니다.

JMeter는 Java로 작성된 오픈 소스로드 테스트 도구입니다. 웹, 웹 서비스, 데이터베이스, 기본적으로 요청을 사용하는 모든 것 등 다양한 서버 유형을 테스트 할 수 있습니다.

그러나 복잡한 테스트를 시작하면 학습 곡선이 가파르지만 그만한 가치가 있습니다. 매우 빨리 시작하고 실행할 수 있으며, 어떤 종류의 스트레스 테스트를 원하느냐에 따라 괜찮을 수 있습니다.

장점 :

  • Apache 프로젝트의 오픈 소스 / 무료 도구 (바이 인 지원)
  • 핵심 개념을 이해하면 시작하기 쉽고 사용하기 쉽습니다. (즉, 요청 작성 방법, 어설 션 작성 방법, 변수 작업 방법 등).
  • 확장 성이 뛰어납니다. 나는 서버에 부하를 생성하는 11 대의 기계로 시간당 거의 백만 명을 기록한 테스트를 수행했습니다. 내가 생각했던 것보다 설정 이 훨씬 쉬웠습니다.
  • 활동적인 커뮤니티와 좋은 리소스를 통해 시작하고 운영 할 수 있습니다. 먼저 튜토리얼을 읽고 잠시 동안 재생하십시오.

단점 :

  • UI는 Swing으로 작성되었습니다. (웃음)
  • JMeter는 서버에서 반환 한 응답 텍스트를 구문 분석하여 작동합니다. 따라서 모든 종류의 자바 스크립트 동작을 확인하려는 경우 운이 좋지 않습니다.
  • 비 프로그래머에게는 학습 곡선이 가파 릅니다. 정규식에 익숙하다면 이미 게임보다 앞서 있습니다.
  • 지원 포럼에는 바보 같은 질문을하는 많은 ( 삽입 expletive ) 바보가있어서 문서를 한 눈에 볼 수 있다면 쉽게 해결할 수 있습니다. ( ‘JMeter를 사용하여 Windows GUI 스트레스 테스트를 수행하는 방법’은 매우 자주 나타납니다).
  • ‘즉석에서’보고하는 것은 특히 큰 테스트의 경우 바람직하지 않습니다. 위에서 언급 한 테스트에서 ‘xml-logfile’을 ‘html’로 변환하는 빠른 콘솔 응용 프로그램을 작성해야했습니다. 그러나 몇 년 전 이었으므로 더 이상 필요하지 않을 것입니다.

답변

나는 그라인더를 사용했다 . 오픈 소스이며 사용하기 쉽고 구성이 매우 쉽습니다. Java 기반이며 스크립트에 Jython을 사용합니다. 우리는 그것을 .NET 웹 응용 프로그램에 대해 실행 했으므로 Java 전용 도구라고 생각하지 마십시오 (자연적으로 웹 스트레스 도구는 사용하는 플랫폼에 묶여서는 안됩니다).

우리는 그것으로 몇 가지 깔끔한 작업을 수행했습니다 … 우리는 웹 기반 통신 응용 프로그램이었습니다. 따라서 멋진 사용법은 웹 응용 프로그램을 통해 전화 번호를 모방 한 다음 자동 응답 도구를 사용하는 것입니다 (기본적으로 자습서였습니다) RTC LCS 서버에 연결하기위한 Microsoft의 앱 (이것은 Microsoft Office Communicator가 로컬 네트워크에서 연결하는 것입니다. 자동으로 전화를 받도록 수정되었습니다) 이를 통해 우리는 The Hammer (또는 이와 유사한 것)라고하는 비싼 전화 도구 대신에 이것을 사용할 수있었습니다.

어쨌든 우리는이 도구를 사용하여 응용 프로그램이 높은 부하에서 어떻게 유지되는지 확인했으며 병목 현상을 찾는 데 매우 효과적이었습니다. 이 도구는보고에 시간이 얼마나 걸리는지를 보여주는보고 기능을 내장하고 있지만 사용하지는 않았습니다. 로그는 모든 응답 및 기타 정보 또는 사용자 정의 로깅을 저장할 수도 있습니다.

가격에 매우 유용한이 도구를 강력히 권장하지만 …이 도구를 사용하여 일부 사용자 정의 설정을 수행 할 것으로 예상합니다 (스크립트를 기록하기 위해 프록시가 내장되어 있지만 세션과 같은 것을 캡처하려면 사용자 정의가 필요할 수 있습니다 … 스레드 당 고유 한 세션을 사용하도록 사용자 정의해야했습니다.)


답변

이 파티에 조금 늦었 어 필자는 Pylot 이 최고의 최신 오픈 소스 도구 라는 데 동의합니다 . 사용하기 쉽고 훌륭한 사람 ( Corey Goldberg ) 이 적극적으로 노력하고 있습니다. OpenQA 의 창립자 인 Pylot이 현재 홈페이지에 등록되어 있으며 일부 인프라 (포럼)를 사용하고 있습니다.

그러나 최근에는로드 테스트의 전체 개념에 결함이 있음을 결정했습니다. 애플리케이션이 복잡해지면서 HTTP 트래픽을 에뮬레이트하는 것은 어려운 일입니다. 이것이 상용 도구 인 BrowserMob을 만든 이유입니다. Selenium 을 사용 하여로드를 재생할 때 실제 웹 브라우저를 제어 하는 외부로드 테스트 서비스 입니다 .

접근 방식은 분명히 필요 t 정상 부하 테스트 기술보다 더 많은 하드웨어를하지만 클라우드 컴퓨팅을 사용하는 경우 하드웨어는 꽤 저렴 사실입니다. 그리고 이것의 좋은 부작용은 스크립팅이 일반적인로드 테스트보다 훨씬 쉽다는 것입니다. 쿠키, .NET 세션 상태, Ajax 요청 매개 변수 등을 추출하기 위해 JMeter와 같은 고급 정규식 일치를 수행 할 필요가 없습니다. 실제 브라우저를 사용하기 때문에 수행해야 할 작업 만 수행합니다.

상업용 제품을 뻔뻔스럽게 발표 한 것은 유감이지만,이 개념이 일부 사람들에게는 흥미롭고 적어도 추가 하드웨어에 액세스 할 때로드 테스트를 처리 할 수있는 새로운 방법에 대해 생각하게 할 것입니다!


답변

JMeter 사용했습니다 . 웹 서버를 테스트하는 것 외에도 데이터베이스 백엔드, 메시징 서비스 및 이메일 서버를 테스트 할 수 있습니다.


답변


답변

간단한 사용법을 위해, ab (apache 벤치 마크)와 포위 공격을 수행합니다. 나중에 쿠키를 지원하지 않으며 동적 사이트에서 끝없는 세션을 생성하므로 나중에 하나가 필요합니다.

둘 다 시작하는 것이 간단합니다.

ab -c n -t 30 url

siege -b -c n -t 30s url

포위 공격은 더 많은 URL로 실행될 수 있습니다.

마지막 포위 공격 버전은 siegerc에서 장황하게 표시됩니다. 해당 파일을 편집해야만 비활성화 할 수 있습니다 ( /usr/local/etc/siegerc).


답변

웹 기반 서비스의 경우 loader.io를 확인하십시오 .

요약:

loader.io는 수천 개의 동시 연결로 웹앱 / api를 스트레스 테스트 할 수있는 무료로드 테스트 서비스입니다.

또한 API가 있습니다.