문제

우리는 JMeter를 사용하여 Apache 2 웹 서버에서 실행중인 PHP 응용 프로그램을 테스트하고 있습니다. JMeter를로드하여 25 또는 50 스레드를 사용할 수 있으며 서버의로드가 증가하지는 않지만 서버의 응답 시간은 증가합니다. 스레드가 많을수록 응답 시간이 느려집니다. JMeter 또는 Apache가 요청을 대기하고있는 것 같습니다. Apache Web Server 구성 파일의 MaxClients 값을 변경했지만 문제가 변경되지는 않습니다. JMeter가 실행되는 동안 응용 프로그램을 사용하고 존경할만한 응답 시간을 얻을 수 있습니다. 무엇을 제공합니까? 스레드 수를 늘려서 서버를 0% 유휴 상태로 세금을 내릴 수있을 것으로 기대합니다. 누구든지 나를 올바른 방향으로 가리키도록 도울 수 있습니까?

업데이트 : 응용 프로그램에서 세션을 제거하면 서버에서 전체로드를 시뮬레이션 할 수 있음을 발견했습니다. 세션을 다시 활성화하고 각 스레드에 HTTP 쿠키 관리자를 사용하려고했지만 영향을 미치지 않는 것 같습니다.

도움이 되었습니까?

해결책

병목 현상이 발생하는 위치를 식별 한 다음 문제를 해결하려고 시도해야합니다.

  • JMeter 클라이언트는 잘 장착 된 기계에서 실행해야합니다. JVM을 실행하는 Solaris/Unix 서버를 선호하지만 <200 스레드의 경우 최신 Windows 머신이 잘 작동합니다. JMeter는 병목 현상이 될 수 있으며 일단 의미있는 결과를 얻지 못할 것입니다. 또한 별도의 시스템에서 테스트와 동일한 네트워크에서 선호하는 것과 관련하여 실행해야합니다. 테스트 리그와 서버가 멀리 떨어져 있으면 WAN 대기 시간이 문제가 될 수 있습니다.
  • 두 번째로 확인해야 할 것은 Apache 직원입니다. Apache에는 Mod_Status -Mod_status가 있습니다. 여기에는 모든 작업자의 상태가 표시됩니다. 풀 크기를 너무 낮게 설정할 수 있습니다. mod_status에서 사용중인 근로자 수를 볼 수 있습니다. 소수의 Apache는 요청을 처리 할 작업자가 없으며 요청이 대기열이 발생합니다. 너무 많아서 아파치는 실행중인 상자의 메모리를 배출 할 수 있습니다.
  • 다음으로 데이터베이스를 확인해야합니다. 별도의 컴퓨터에있는 경우 데이터베이스는 IO 또는 CPU 부족을 가질 수 있습니다.
  • 병목 현상을 치고 서버와 DB가 동일한 컴퓨터에있는 경우 일반적으로 CPU, RAM 또는 IO 한계에 도달합니다. 나는 그들이 식별하기 가장 쉬운 순서로 나열했습니다. CPU 바운드 앱을 얻으면 CPU 사용량이 100%로 쉽게 볼 수 있습니다. RAM이 부족하면 기계가 교환을 시작합니다. Windows와 Unix에서 사용 가능한 무료 RAM을보기가 상당히 쉽습니다. 마지막으로, 당신은 IO 묶일 수 있습니다. 이것은 다양한 도구 나 통계를 사용하여 모니터링 할 수 있지만 CPU만큼 명확하지는 않습니다.

마지막으로, 구체적으로 귀하의 질문에, 눈에 띄는 것은 단일 디렉토리에 수많은 세션 파일을 저장할 수 있다는 것입니다. PHP는 종종 파일에 세션 정보를 저장합니다. 이 디렉토리가 커지면 PHP가 세션을 찾는 데 점점 더 오랜 시간이 걸립니다. 테스트를 실행하면 쿠키가 꺼지면 PHP 앱이 각 사용자 요청에 대해 수천 개의 세션 파일을 생성했을 수 있습니다. Windows 서버에서는 UNIX 서버보다 속도가 빨라지고 디렉토리가 두 운영 체제에 저장되는 방식의 차이를 수행합니다.

다른 팁

일정한 처리량 타이머를 사용하고 있습니까? JMeter가 스레드가 할당 된 스레드로 처리량을 서비스 할 수없는 경우 응답 시간 에이 대기열과 폭발이 표시됩니다. 이것이 문제인지 알아 내려면 더 많은 스레드를 추가하십시오.

또한 스크립트 내에 JavaScript 통화가있을 때 이런 일이 발생한다는 보고서를 찾았습니다. 이 경우 JavaScript 호출을 스크립트 상단의 테스트 계획 요소로 이동하거나 값을 사전 계산하는 방법을 찾으십시오.

PHP가 아닌 Apache가 제공하는 정적 파일을 확인하여 문제가 Apache 구성 또는 PHP 구성에 있는지 확인하십시오.

또한 네트워크 연결 및 구성을 확인하십시오. 우리의 JMeter 테스트는 벽에 부딪 칠 때까지 멋지게 진행되었습니다. 결국 우리는 100MB 연결만으로도 포화되어 기가비트가 고정되어 있음을 깨달았습니다. 네트워크 카드 나 스위치가 생각보다 낮은 속도로 실행 중일 수 있습니다. 특히 속도 설정이 "자동"인 경우.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top