Run Count로 Test 돌릴시 TPS가 갑자기 떨어지는 현상이 발생합니다.

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Run Count로 Test 돌릴시 TPS가 갑자기 떨어지는 현상이 발생합니다.

YJ.KIM
안녕하세요. nGrinder로 서버 테스트를 하고 있는데,
동일한 조건에서 Duration을 설정하여 테스트 할 때와는 달리
Run count를 설정하여 테스트 할 때 TPS가 갑자기 수직하락 하는 현상을 보이고 있습니다.
특정 횟수나 시간에 그러는 것이 아니라 전체 Test중에 약 90% 정도 완수하고 나면 급격히 떨어지는데, 혹시 Duration으로 돌리는 것과 Run count로 돌리는 것이 내부적으로 어떤 차이가 있는지 알 수 있을까요?
더불어 이런 현상이 어떤 문제에 의해 발생하는지 알 수 있었으면 좋겠습니다.


Reply | Threaded
Open this post in threaded view
|

RE: Run Count로 Test 돌릴시 TPS가 갑자기 떨어지는 현상이 발생합니다.

junoyoon
Administrator

Run Count는 각 쓰레드마다 몇번씩 돌것인지를 에이전트에 명령하고 돌린후, 모든 에이전트의 쓰레드가 해당 Run Count 만큼의 반복을 완료할 때까지 기다립니다.

특정 에이전트의 CPU와 메모리가 빠빵하다면.해당 반복을 상대적으로 빠르게 완료할 수 있겠죠.. (약 10%정도가 MAX 일듯..)

 

지금 상황은 특정 에이전트에서 반복 수행이 지연됬고, 

이에 따라 컨트롤로가 에이전트의 전체 종료(모든 에이전트가 종료될때까지 기다리는)가 지연되는 도중에

다른 에이전트는 수행을 종료하게 됬을때 발생하는 상황인것 같습니다.

 

에이전트의 스펙이 모두 같은지.. 혹시 Free 메모리가 서로 다른지 확인하시면 될것 같습니다.

 

-----Original Message-----
From: "YJ.KIM [via ngrinder]"<[hidden email]>
To: "junoyoon"<[hidden email]>;
Cc:
Sent: 2013-10-31 (목) 13:54:55
Subject: Run Count로 Test 돌릴시 TPS가 갑자기 떨어지는 현상이 발생합니다.

안녕하세요. nGrinder로 서버 테스트를 하고 있는데,
동일한 조건에서 Duration을 설정하여 테스트 할 때와는 달리
Run count를 설정하여 테스트 할 때 TPS가 갑자기 수직하락 하는 현상을 보이고 있습니다.
특정 횟수나 시간에 그러는 것이 아니라 전체 Test중에 약 90% 정도 완수하고 나면 급격히 떨어지는데, 혹시 Duration으로 돌리는 것과 Run count로 돌리는 것이 내부적으로 어떤 차이가 있는지 알 수 있을까요?
더불어 이런 현상이 어떤 문제에 의해 발생하는지 알 수 있었으면 좋겠습니다.





If you reply to this email, your message will be added to the discussion below:
http://ngrinder.642.n7.nabble.com/Run-Count-Test-TPS-tp1028.html
To start a new topic under ngrinder-user-kr, email [hidden email]
To unsubscribe from ngrinder-user-kr, click here.
NAML
Reply | Threaded
Open this post in threaded view
|

RE: Run Count로 Test 돌릴시 TPS가 갑자기 떨어지는 현상이 발생합니다.

YJ.KIM
빠른 답변 감사드립니다.
여기에 추가적으로 한 가지 더 질문을 드리고 싶은데요.. 지금 상황과는 무관한 질문입니다.
같은 스크립트 파일로 진행중인데, process의 수가 10개가 되는 순간부터 script error가 발생하면서 진행이 되지 않는 현상이 나오는데요.
동일한 vuser수를 유지한 채로 process와 thread수를 변경해가면서 테스트를 진행하고 있습니다.
또한, 스크립트문은 URL만 쳐서 나온 기본 스크립트를 수정하지 않았고 script validation 과정도 거쳤습니다.
혹시 script error가 발생하는 원인엔 어떤 것들이 있는지 알 수 있을까요?
이전에 process의 수가 10개 이상이 되면 OS에 의해서 문제가 발생하는 경우가 있다는 댓글을 봤었는데, 그럼 OS에 의해 문제가 발생하는 이유가 어떻게 되는지 궁금합니다.  (해당 링크 : http://ngrinder.642.n7.nabble.com/Agent-Error-td828.html)
감사합니다.
Reply | Threaded
Open this post in threaded view
|

RE: Run Count로 Test 돌릴시 TPS가 갑자기 떨어지는 현상이 발생합니다.

junoyoon
Administrator
어떤 에러인지 로그를 알려주시면 감사하겠습니다.

혹시 아무런 로그 없이 에러가 발생하였다면

http://junoyoon.tistory.com/108
의 14번 항목 "리눅스상에서...." 요부분을 참고해서 설정해 보세요.
Reply | Threaded
Open this post in threaded view
|

RE: Run Count로 Test 돌릴시 TPS가 갑자기 떨어지는 현상이 발생합니다.

YJ.KIM
로그는 아래가 전부 입니다.

2013-10-31 04:02:39,353 INFO  The Grinder version 3.9.1
2013-10-31 04:02:39,391 INFO  Java(TM) SE Runtime Environment 1.7.0_45-b18: Java HotSpot(TM) 64-Bit Server VM (24.45-b08, mixed mode) on Linux amd64 3.2.0-54-virtual
2013-10-31 04:02:39,486 INFO  time zone is UTC (+0000)
2013-10-31 04:02:41,442 INFO  worker process 0 of agent number 2
2013-10-31 04:02:42,178 INFO  instrumentation agents: byte code transforming instrumenter for Jython 2.5; byte code transforming instrumenter for Java
2013-10-31 04:03:11,293 INFO  registered plug-in net.grinder.plugin.http.HTTPPlugin
2013-10-31 04:03:12,065 INFO  running "script.py" using Jython 2.5.3 (2.5:c56500f08d34+, Aug 13 2012, 14:54:35)
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)]

그리고 링크에서 해당 사항을 체크했는데 문제는 없습니다.
혹시나 해서 request timeout을 늘렸더니 script error는 발생하지 않고 All agents are unexpectively lost 라고 나오면서 조금 진행되다가 종료가 되네요.
그래서 관련 질문에 대한 답변을 달아주신 것을 보고 확인하였습니다. (해당 링크 : http://ngrinder.642.n7.nabble.com/-td603.html)
아무래도 메모리가 부족해서 생기는 문제인 것 같습니다.
감사합니다.
Reply | Threaded
Open this post in threaded view
|

RE: Run Count로 Test 돌릴시 TPS가 갑자기 떨어지는 현상이 발생합니다.

junoyoon
Administrator
현재 가용 메모리가 2G 이고(free 명령어로 확인), 프로세스를 10개를 띄울 경우, 한개의 프로세스가 사용하는 메모리는 다음의 로직에 의해

int reservedMemory = Math.max(reservedMemoryUnit, 0) * 1024 * 1024;
                int processCount = NumberUtils.toInt(processCountStr, 1);
                long desirableXmx = DEFAULT_XMX_SIZE; // make 500M as default.
                long permGen = 32 * 1024 * 1024;
                try {
                        // Make a free memory room size of reservedMemory.
                        long free = new Sigar().getMem().getActualFree() - reservedMemory;
                        long perProcessTotalMemory = Math.max(free / processCount, MIN_PER_PROCESS_MEM_SIZE);
                        desirableXmx = (long) (perProcessTotalMemory * 0.5);
                        permGen = Math.min(Math.max((long) (perProcessTotalMemory * 0.2), 50L * 1024 * 1024), 128 * 1024 * 1024);
                        if (this.useXmxLimit) {
                                desirableXmx = Math.min(DEFAULT_MAX_XMX_SIZE, desirableXmx);
                        }

80 메가가 않됩니다. ngrinder 가 유일하게 하나 에러를 출력하지 못하는 부분이 프로세스를 띄우면서 발생하는 OOM 에러인데요.. 저희의 경우는 그래서 4G 머신으로 운영할 때는 유휴시에 메모리 가용량이 3G 정도 되도록 조정하여 에이전트를 띄웁니다.

아무래도 말씀하신데로.. 메모리 문제가 발생하였을 것 같네요. 메모리를 좀 더 늘려보시거나, 아니면 프로세스 개수를 좀 줄이세요. ngrinder 는 프로세스/쓰레드 계산 로직 조차 직접 커스터마이징 하실 수 있는데요..

.ngrinder 폴더내의 process_and_thread_policy.js 파일을 여신 다음에..

        if (processCount > 10) {
                processCount = 10;
        }

이 부분을 5~7 정도로 조정해 놓으셔서 사용하시면 되겠습니다.
Reply | Threaded
Open this post in threaded view
|

RE: Run Count로 Test 돌릴시 TPS가 갑자기 떨어지는 현상이 발생합니다.

YJ.KIM
네 덕분에 해결할 수 있겠습니다.
추후 또 문의 사항이 있으면 포럼에 글 남기겠습니다.
감사합니다 ^^