Controller 16001 포트 안생기는 문제

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

Controller 16001 포트 안생기는 문제

zepinos
윤준호님 블로그를 보면서 nGrinder 을 설치해보려고 합니다만 잘 안되네요.

소스포지에서 ngrinder-controller-3.2.1.war 을 받아서 기존 tomcat 에 배포를 했는데, 16001 포트가 보이질 않습니다. CentOS 5.x 이고, JDK 는 OpenJDK 7 입니다.

로컬 PC(Windows)에 Agent 받아서 agent mode 로 실행하면 16001 포트로 접근하려고 하나, 16001 에 접속이 안됩니다.

어떻게 해결하면 될까요?

조언 부탁드립니다.
Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

junoyoon
Administrator
Openjdk 는 지원하지 않습니다. 오라클 jdk를 설치하세요. 


Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

zepinos
오라클 JDK7 로 바꾸고 실행했습니다만, 동일한 증상이네요.

netstate -na | grep 16001

의 결과가 없습니다.

$tomcat_home/webapps/ 에 war 파일 넣고 실행하면 16001 포트를 사용하는 데몬이 자동 실행되는 건가요?
Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

junoyoon
Administrator

예 그렇습니다. 

 

아무래도 로그를 확인해야 겠네요.

 

~/.ngrinder/logs 폴더내의 로그를 올려주시면 확인해 보도록 하겠습니다.

 

-----Original Message-----
From: "zepinos [via ngrinder]"<[hidden email]>
To: "junoyoon"<[hidden email]>;
Cc:
Sent: 2013-08-19 (월) 17:24:18
Subject: RE: Controller 16001 포트 안생기는 문제

오라클 JDK7 로 바꾸고 실행했습니다만, 동일한 증상이네요.

netstate -na | grep 16001

의 결과가 없습니다.

$tomcat_home/webapps/ 에 war 파일 넣고 실행하면 16001 포트를 사용하는 데몬이 자동 실행되는 건가요?


If you reply to this email, your message will be added to the discussion below:
http://ngrinder.642.n7.nabble.com/Controller-16001-tp794p796.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: Controller 16001 포트 안생기는 문제

zepinos
tomcat 로그에 올라오는 것만 봤는데, 거기에 다른 로그가 찍히고 있었네요.

net.grinder.communication.CommunicationException: Could not bind to address '61.78.xxx.xxx:16001'

java.net.BindException: Cannot assign requested address

이런 오류가 발생했네요.

controller 와 agent 모두 같은 내부 IP 에서만 동작하는 것이라 별 신경을 안썼는데...



그런데 이상한게 61.78. 로 시작하는 저 IP 는...제가 있는 곳과는 무관한 IP 인거 같은데...정체가 뭘까요?
Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

junoyoon
Administrator

서버에 여러개의 IP 가 있을 경우, ngrinder는 현재 머신의 IP 판단을 다음과 같이 합니다.

 

1. 자바의 InetAddress.getLocalAddress()로 현재 IP를 리졸브

2. 만약 위에서 localhost(127.0.0.1) 가 리턴될 경우, 구글로 연결을 시도하여 이때 사용한 Public IP로 Binding 

 

말씀 하신 경우는 해당 머신이 여러 IP를 가지고 있고, 1번에서 해당 머신에서 특수 용도로 사용한 엉뚱한 IP가 리턴된 듯 합니다.

보통 리눅스에서 자바 프로그램을 돌릴때 유사한 문제가 많이 발생하고는 합니다.

이 경우에는 system.conf 파일을 오픈하시어, 바인딩할 IP를 직접 지정해 주면 됩니다.

 

ngrinder.controller.ipaddress=바인딩하고자하는IP주소 

 

그 뒤에 재 시작 하시고 로그를 모니터링 해보세요.

 

Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

zepinos
아래와 같이 system.conf 에 설정이 되어 있는 상태였습니다.

ngrinder.controller.ip=192.168.0.xx

외부에서 보이는 IP 로 변경을 해보았습니다.

#ngrinder.controller.ip=192.168.0.xx
ngrinder.controller.ip=121.140.xxx.xxx

여전히 아래와 같은 문제가 발생하네요.

ngrinder.log

조언 부탁드립니다.
Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

junoyoon
Administrator

몇가지가 의심됩니다.

 

1. 혹시 webapps 폴더에 war 파일이 2개 들어 있지 않나요?

    두개의 ngrinder 가 뜨려고 시도할때 이런 문제가 발생할 수도 있습니다.

 

2. 퍼미션 문제? 특정 리눅스 환경에서는 툭정 토트를 Listening 하고자 할때 ROOT 퍼미션을 요구하는 경우가 있습니다,

 

 

확인해 보세요.

   

Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

zepinos
docs  examples  host-manager  jenkins  manager  ngrinder  ROOT
이렇게 $TOMCAT_HOME/webapps/ 에 존재합니다. 이전에 ngrinder.war 파일도 있었으나 그걸 뺀 상태에서도 마찬가지입니다. 원래 jenkins 용으로만 쓰던 깨끗한 OS 이고...jenkins 의 pam 플러그인을 이용한 로그인 부분 때문에 root 로 tomcat 을 띄우게 되어 있는 상태입니다. tomcat 은 tar.gz 파일 받아서 직접 bin 에서 startup.sh 로 실행하는 상태입니다.



아...램이 1G 인데(Xen Server 가상머신이라) Agent 가 램을 많이 먹는 건 알고 있었는데, 혹시 Controller 도 2G 이상 되어야 하는건가요? (이 증상과는 별 상관은 없겠지만 말이죠)
Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

junoyoon
Administrator

controller 도 약 1G 램을 사용합니다. 설정 가이드에 보시면 catalina.sh 를 편집하여 JAVA_OPTS 를 부여하도록 설명되어 있습니다.

 

 

python -m SimpleHTTPServer 16001 라서 하셔서 시스템이 16001 포트에 바인딩을 지원하는지 확인 부탁드립니다. 

Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

zepinos
junoyoon wrote
python -m SimpleHTTPServer 16001
잘 뜨네요. 제 PC 에서도 접근 잘 됩니다.

JAVA_OPTS="-Xms600m -Xmx1024m -XX:MaxPermSize=200m"
catalina.sh 의 제일 하단에 JAVA_OPTS 을 추가해두긴 했습니다.
Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

junoyoon
Administrator

JAVA_OPTS는 일단 제일 위에 설정을 해야 합니다. 왜냐하면.. catalina.sh 에서 JAVA_OPTS를 확장하기 때문이죠.

 

제일 아래에 위치시키면 catalina.sh 에서 설정한 JAVA_OPTS 가 모두 덮어쓰기 됩니다.

 

그리고.. 지금 문제는 메모리 문제일수도 있겠다는 생각이 드는군요.

 

작은 메모리 공간을 여러 어플리케이션(Jenkins, ROOT, manager)이 확보하려다 보니.. 

 

Jenkins 도 요구하는 메모리가 상당한데, 거기다가 ngrinder 까지 있으니까요..

 

별도의 VM을 설치하시고(메모리 2G 정도) 거기에다가 ngrinder 를 설치하시기 바랍니다.

 

Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

zepinos
일단 현재 머신에 catalina.sh 에 JAVA_OPTS 위치를 변경시키고 실행했을 때에도 동일한 증상이 발생하네요.

내일 다시 가상머신을 하나 추가해서 작업해보고, 문제가 발생하면 다시 도움 부탁드리겠습니다. 꾸벅.



오늘 도움 주셔서 감사합니다.
Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

zepinos
메모리 4G 로 올린 상태입니다.

# free -m
             total       used       free     shared    buffers     cached
Mem:          4096       1324       2771          0         15        306
-/+ buffers/cache:       1002       3093
Swap:         2079          0       2079
그리고, jenkins 도 $TOMCAT_HOME/webapps 에서 뺐습니다.

동일한 증상이 계속 발생하네요.

무슨 이유인지 정말 모르겠네요. 혹시 hosts 파일과도 연관이 있을까요? 외부에 공개되는 서버가 아니라서 hosts 작업은 하지 않았습니다.
Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

junoyoon
Administrator

webapps 폴더에서 ngrinder 를 제외한 나머지를 모두 삭제해 보시고 해보세요.

Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

junoyoon
Administrator
In reply to this post by zepinos
Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

zepinos
미치겠네요. T.T

다른 디렉토리를 이동시켜도 안되고, 링크 걸어주신 tomcat 합본(tomcat 6 기반, 메모리 설정이 포함되어 있어서 별도 추가는 안했습니다) 역시 동일한 결과가 나오네요.

2013-08-20 16:35:34,904 INFO  DynamicCacheConfig.java:77 :  In no cluster mode.
2013-08-20 16:35:35,641 ERROR ErrorHandlerImplementation.java:67 :  Failed to bind to console address, check options.
net.grinder.console.common.DisplayMessageConsoleException: Failed to bind to console address, check options.
        at net.grinder.console.communication.ConsoleCommunicationImplementationEx.reset(ConsoleCommunicationImplementationEx.java:167) ~[ngrinder-core-3.2.1.jar:na]
        at net.grinder.console.communication.ConsoleCommunicationImplementationEx.<init>(ConsoleCommunicationImplementationEx.java:126) ~[ngrinder-core-3.2.1.jar:na]
        at net.grinder.console.communication.ConsoleCommunicationImplementationEx.<init>(ConsoleCommunicationImplementationEx.java:81) ~[ngrinder-core-3.2.1.jar:na]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.7.0_25]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[na:1.7.0_25]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_25]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_25]
        at org.picocontainer.injectors.AbstractInjector.newInstance(AbstractInjector.java:147) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:332) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:272) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:354) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:692) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:646) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:632) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.parameters.BasicComponentParameter$1.resolveInstance(BasicComponentParameter.java:105) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:136) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.injectors.SingleMemberInjector.getParameter(SingleMemberInjector.java:76) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments(ConstructorInjector.java:299) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:325) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe(AbstractInjector.java:272) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.injectors.ConstructorInjector.getComponentInstance(ConstructorInjector.java:354) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance(AbstractInjectionFactory.java:56) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.behaviors.AbstractBehavior.getComponentInstance(AbstractBehavior.java:64) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.behaviors.Stored.getComponentInstance(Stored.java:91) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:692) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:646) ~[picocontainer-2.13.6.jar:na]
        at org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:671) ~[picocontainer-2.13.6.jar:na]
        at net.grinder.AgentControllerServer.run(AgentControllerServer.java:87) ~[ngrinder-core-3.2.1.jar:na]
        at net.grinder.AgentControllerServerDaemon.startSync(AgentControllerServerDaemon.java:136) ~[ngrinder-core-3.2.1.jar:na]
        at net.grinder.AgentControllerServerDaemon$1.run(AgentControllerServerDaemon.java:121) ~[ngrinder-core-3.2.1.jar:na]
        at java.lang.Thread.run(Thread.java:724) ~[na:1.7.0_25]
Caused by: net.grinder.communication.CommunicationException: Could not bind to address '61.78.35.200:16001'
        at net.grinder.communication.Acceptor.<init>(Acceptor.java:98) ~[grinder-core-3.9.1.jar:na]
        at net.grinder.console.communication.ConsoleCommunicationImplementationEx.reset(ConsoleCommunicationImplementationEx.java:165) ~[ngrinder-core-3.2.1.jar:na]
        ... 33 common frames omitted
Caused by: java.net.BindException: Cannot assign requested address
        at java.net.PlainSocketImpl.socketBind(Native Method) ~[na:1.7.0_25]
        at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376) ~[na:1.7.0_25]
        at java.net.ServerSocket.bind(ServerSocket.java:376) ~[na:1.7.0_25]
        at java.net.ServerSocket.<init>(ServerSocket.java:237) ~[na:1.7.0_25]
        at net.grinder.communication.Acceptor.<init>(Acceptor.java:93) ~[grinder-core-3.9.1.jar:na]
        ... 34 common frames omitted
2013-08-20 16:35:37,212 WARN  Cglib2AopProxy.java:255 :  Unable to proxy method [public final boolean org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationProvider.supports(java.lang.Class)] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2013-08-20 16:35:37,247 WARN  Cglib2AopProxy.java:255 :  Unable to proxy method [public final void org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.afterPropertiesSet() throws java.lang.Exception] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2013-08-20 16:35:37,391 INFO  PluginManager.java:113 :  Initializing Plugin System
2013-08-20 16:35:37,486 INFO  PluginManager.java:220 :  plugin descriptor org.ngrinder.infra.plugin.OnPeridocWorkingAgentCheckRunnableDescriptor with on-working-agent-check is initiated.
2013-08-20 16:35:37,486 INFO  PluginManager.java:220 :  plugin descriptor org.ngrinder.infra.plugin.OnPreAuthServletFilterModuleDescriptor with on-preauth-servletfilter is initiated.
2013-08-20 16:35:37,486 INFO  PluginManager.java:220 :  plugin descriptor org.ngrinder.infra.plugin.OnTestSamplingModuleDescriptor with on-test-sampling is initiated.
2013-08-20 16:35:37,487 INFO  PluginManager.java:220 :  plugin descriptor org.ngrinder.infra.plugin.OnControllerLifeCycleModuleDescriptor with on-start is initiated.
2013-08-20 16:35:37,487 INFO  PluginManager.java:220 :  plugin descriptor org.ngrinder.infra.plugin.OnServletFilterModuleDescriptor with on-servletfilter is initiated.
2013-08-20 16:35:37,487 INFO  PluginManager.java:220 :  plugin descriptor org.ngrinder.infra.plugin.OnTestLifeCycleModuleDescriptor with on-test-start is initiated.
2013-08-20 16:35:37,488 INFO  PluginManager.java:220 :  plugin descriptor org.ngrinder.infra.plugin.OnLoginModuleDescriptor with on-login is initiated.
2013-08-20 16:35:38,808 INFO  PluginManager.java:155 :  Plugin System is started.
Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

junoyoon
Administrator

system.conf 파일을 올려주세요.

Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

zepinos
아래에 system.conf 파일 올립니다.

system.conf

그리고, 제 PC 에 링크 걸어주신 합본으로 시작하니 잘 되는군요. Windows 7 x64 이고, Oracle JDK 7 입니다.

agent 도 잘 붙구요.

리눅스 서버와는 같은 공유기 아래에 있습니다.
Reply | Threaded
Open this post in threaded view
|

RE: Controller 16001 포트 안생기는 문제

junoyoon
Administrator

ngrinder.controller.ip= 가 아닌.. 

 

ngrinder.controller.ipaddress=라고 쓰셔야 합니다.

 

제가 잘못 가이드 한듯 하군요.. -.-;

 

12