안녕하세요.
100메가 테스트인 경우에는 어느정도 vUser 100이상도 문제 없었는데. 대용량(1기가) 다운로드에 대한 테스트를 진행중 heap sapce 에러에 대해 문의합니다. java 버전은 agnet, controller 모두 아래와 같습니다. $ java -version java version "1.7.0_60" Java(TM) SE Runtime Environment (build 1.7.0_60-b19) Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode) agent 설정은 agent.limit_xmx=false로 준 상태입니다. 테스트 스크립트 그루비 스크립트 코드로 짰고 @BeforeThread, @BeforeProcess에서는 메모리를 먹을만한 특별한 동작을 하지않고 @Test 부분에서는 HTTPResponse response request.GET( obejctUrl, null, token) 로 다운로드 받습니다. agent 메모리가 20기가 넘는 상태이며 동작중에 top으로 살펴보면 free memory도 여유 있습니다. 5agent 4process 1thread agent 에러를 보면 이렇습니다. java '-javaagent:../../../../ngrinder-agent/lib/grinder-dcr-agent-3.9.1.jar' '-Dparam=1024' '-Djna.library.path=/home/kinx/.ngrinder_agent/file-store/admin/current/lib' '-Dpython.path=/home/kinx/.ngrinder_agent/file-store/admin/current/lib' '-Dpython.cachedir=/tmp/jython' '-Dngrinder.etc.hosts=xxx.client4:127.0.0.1,localhost:127.0.0.1,xxx.proxy1.com:121.78.191.61,xxx.proxy2.com:121.78.191.62,xxx.snode1.com:121.78.191.71,xxx.snode2.com:121.78.191.72,xxx.snode3.com:121.78.191.73,xxx.snode4.com:121.78.191.74,xxx.snode5.com:121.78.191.75' '-Dsun.net.spi.nameservice.provider.1=dns,LocalManagedDns' '-Xms7896m' '-Xmx7896m' '-XX:PermSize=128m' '-XX:MaxPermSize=128m' -classpath '../../../../ngrinder-agent/lib/ngrinder-runtime-3.3.jar:../../../../ngrinder-agent/lib/grinder-patch-3.9.1-patch.jar:.:../../../../ngrinder-agent/lib/ngrinder-groovy-3.3.jar:../../../../ngrinder-agent/lib/dnsjava-2.1.1.jar:../../../../ngrinder-agent/lib/asm-3.3.1.jar:../../../../ngrinder-agent/lib/picocontainer-2.13.6.jar:../../../../ngrinder-agent/lib/slf4j-api-1.6.4.jar:../../../../ngrinder-agent/lib/commons-io-2.0.1.jar:../../../../ngrinder-agent/lib/json-20090211.jar:../../../../ngrinder-agent/lib/grinder-httpclient-3.9.1.jar:../../../../ngrinder-agent/lib/junit-dep-4.8.2.jar:../../../../ngrinder-agent/lib/commons-lang-2.6.jar:../../../../ngrinder-agent/lib/hamcrest-all-1.1.jar:../../../../ngrinder-agent/lib/groovy-all-2.2.1.jar:../../../../ngrinder-agent/lib/grinder-dcr-agent-3.9.1.jar:../../../../ngrinder-agent/lib/grinder-core-3.9.1.jar:../../../../ngrinder-agent/lib/logback-classic-1.0.0.jar:../../../../ngrinder-agent/lib/grinder-http-3.9.1.jar:../../../../ngrinder-agent/lib/logback-core-1.0.0.jar:../../../../ngrinder-agent/lib/ngrinder-runtime-3.3.jar' net.grinder.engine.process.WorkerProcessEntryPoint 2014-09-11 16:47:45,940 INFO The Grinder version 3.9.1 2014-09-11 16:47:45,945 INFO Java(TM) SE Runtime Environment 1.7.0_60-b19: Java HotSpot(TM) 64-Bit Server VM (24.60-b09, mixed mode) on Linux amd64 3.13.0-24-generic 2014-09-11 16:47:45,949 INFO time zone is KST (+0900) 2014-09-11 16:47:46,059 INFO worker process 0 of agent number 0 2014-09-11 16:47:46,081 INFO Instrumentation agents: byte code transforming instrumenter for Java; byte code transforming instrumenter for Java 2014-09-11 16:47:47,320 INFO registered plug-in net.grinder.plugin.http.HTTPPlugin 2014-09-11 16:47:47,447 INFO Running "ST_119_Down.groovy" using GroovyScriptEngine running with groovy version: 2.2.1 2014-09-11 16:47:47,492 INFO starting, will run forever 2014-09-11 16:47:47,492 INFO Start time is 1410421667492 ms since Epoch 2014-09-11 16:47:55,312 INFO http://xxx.test.net/v1/nGrinder_Down/dummy_1024_0_0_0 -> 200 OK, 1073741824 bytes 2014-09-11 16:48:02,901 INFO http://xxx.test.net/v1/nGrinder_Down/dummy_1024_0_0_0 -> 200 OK, 1073741824 bytes 2014-09-11 16:48:11,013 INFO http://xxx.test.net/v1/nGrinder_Down/dummy_1024_0_0_0 -> 200 OK, 1073741824 bytes 2014-09-11 16:48:18,980 INFO http://xxx.test.net/v1/nGrinder_Down/dummy_1024_0_0_0 -> 200 OK, 1073741824 bytes 2014-09-11 16:48:26,809 INFO http://xxx.test.net/v1/nGrinder_Down/dummy_1024_0_0_0 -> 200 OK, 1073741824 bytes 2014-09-11 16:48:34,464 INFO http://xxx.test.net/v1/nGrinder_Down/dummy_1024_0_0_0 -> 200 OK, 1073741824 bytes 2014-09-11 16:48:35,213 ERROR Java heap space java.lang.OutOfMemoryError: Java heap space at HTTPClient.HTTPResponse.readResponseData(HTTPResponse.java:981) ~[grinder-httpclient-3.9.1.jar:na] at HTTPClient.HTTPResponse.getData(HTTPResponse.java:515) ~[grinder-httpclient-3.9.1.jar:na] at net.grinder.plugin.http.HTTPRequest$AbstractRequest.getHTTPResponse(HTTPRequest.java:1290) ~[grinder-http-3.9.1.jar:na] at net.grinder.plugin.http.HTTPRequest.GET(HTTPRequest.java:499) ~[grinder-http-3.9.1.jar:na] at net.grinder.plugin.http.HTTPRequest$GET.call(Unknown Source) ~[na:na] at ST_119_Down.getSwift(ST_119_Down.groovy:148) ~[na:na] at ST_119_Down$getSwift.callCurrent(Unknown Source) ~[na:na] at ST_119_Down.test(ST_119_Down.groovy:94) ~[na:na] at net.grinder.scriptengine.groovy.junit.GrinderRunner.run(GrinderRunner.java:170) ~[ngrinder-groovy-3.3.jar:na] at net.grinder.scriptengine.groovy.GroovyScriptEngine$GroovyWorkerRunnable.run(GroovyScriptEngine.java:148) ~[ngrinder-groovy-3.3.jar:na] at net.grinder.engine.process.GrinderThread.run(GrinderThread.java:118) ~[grinder-core-3.9.1.jar:na] 2014-09-11 16:48:42,894 INFO http://xxx.test.net/v1/nGrinder_Down/dummy_1024_0_0_0 -> 200 OK, 1073741824 bytes 2014-09-11 16:48:45,618 INFO received a stop message 2014-09-11 16:48:47,695 INFO received a stop message 2014-09-11 16:48:50,697 INFO received a stop message 2014-09-11 16:48:50,799 INFO communication shut down |
Administrator
|
ngrinder 에이전트는 프로세스별로 최대 1G 의 메모리만을 사용하도록 기본 설정되어 있습니다.
이는 GC로 인한 Stop the World 현상을 최소화 하기 위한 조치이며, 이를 해결하기 위해서는 다음과 같은 두가지 방법이 있습니다. 1. request.GET 을 하는 시점에 모든 데이터를 읽어오지 않게 하고, 버퍼 사이즈만큼 반복하여 읽도록 한다. * http://www.cubrid.org/wiki_ngrinder/entry/how-to-handle-the-big-response 에 관현한 내용이 있습니다. 2. 1G 메모리 한계를 해제한다. * 에이전트가 설치된 서버에 .ngrinder_agent/agent.conf 를 여시고 agent.limit_xmx=false 로 설정해 주세요. 그러면 현재 메모리가 20G 이고, 프로세스를 2개를 돌리시는 경우, 에이전트는 10G 씩 메모리를 사용하게 됩니다. |
Free forum by Nabble | Edit this page |