안녕하세요.
grinder에서 socket을 사용하여 파일 업로드 하는 스크립트를 작성하였는데 Ngrinder에서는 import socket이 되지 않아 스크립트를 사용하지 못하고 있습니다 이에 대한 해결 방안이 있으시면 조언 부탁드립니다. 감사합니다 |
Administrator
|
nGrinder 는 grinder-3.9 를 쓰고 있고, 여기에 Jython 2.2 를 올려서 사용하고 있는데
Jython 2.2 에는 python 디폴트 라이브러리가 구현되어 있지 않습니다. 현재 nGrinder 3.2 버전에는 grinder-3.11 로 업그레이드 될꺼구요. 그러면 Jython 2.5 를 사용하게 되어, 테스트가 가능해 지시게 됩니다. 현재 버전에서 socket 을 사용하려면.. - Jython 2.5 를 사용하도록 스크립트 관리에서 lib 폴더를 만드시고 여기에 jython 2.5 standalone jar 를 올리시면 됩니다. * http://junoyoon.tistory.com/entry/nGrinder-record%EB%A5%BC-%EC%82%AC%EC%9A%A9%EB%AA%BB%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0 를 참고하세요. - 아니면 python socket 대신 자바 socket 을 쓰세요. |
네 답변 감사드립니다.
말씀하신대로 jython 2.5 standalone jar를 올려 확인해보니 import socket은 되는것으로 보입니다. 문제는 socket connect가 정상적으로 안되고 있는것 같네요.. Grinder에서는 정상 동작하는 스크립트인데 nGrinder에서는 아래 코드의 exit(2)로 빠지게 되네요.. -------------------------------------------------------------- HOST = '192.168.255.27' PORT = 8080 try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except socket.error, msg: sys.stderr.write("[ERROR] %s\n" % msg[1]) sys.exit(1) try: sock.connect((HOST, PORT)) except socket.error, msg: sys.stderr.write("[ERROR] %s\n" % msg[1]) sys.exit(2) return ------------------------------- 우선 좀더 확인해보고 잘안되면 JAVA로도 해봐야겠어요... 감사합니다~ |
Administrator
|
혹시 SecurityMode 를 On 으로 해 놓으신거 아닌가요? 에러 메시지는 어떠한가요?
|
Security Mode에 대해서 별도로 설정하지는 않았습니다.
참고 사항으로 jython 2.5 standalone jar를 lib 폴더에 넣고 HTTPRequest를 사용할경우 다음과 같은 에러가 발생하고 있네요.. -------------------------------------- 2013-01-22 14:40:17,239 ERROR Aborted run: Java exception calling TestRunner net.grinder.scriptengine.jython.JythonScriptExecutionException: Java exception calling TestRunner result = login_request.POST('/api/account/login', File "/root/.ngrinder_agent/file-store/current/Remove_Upload.py", line 55, in LogIn self.LogIn(pcName, processIDX, threadIDX) File "/root/.ngrinder_agent/file-store/current/Remove_Upload.py", line 133, in __call__ java.net.NoRouteToHostException: No route to host at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.7.0_10] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) ~[na:1.7.0_10] at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) ~[na:1.7.0_10] at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) ~[na:1.7.0_10] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391) ~[na:1.7.0_10] at java.net.Socket.connect(Socket.java:579) ~[na:1.7.0_10] at java.net.Socket.connect(Socket.java:528) ~[na:1.7.0_10] at java.net.Socket.<init>(Socket.java:425) ~[na:1.7.0_10] at java.net.Socket.<init>(Socket.java:241) ~[na:1.7.0_10] at HTTPClient.HTTPConnection$EstablishConnection.run(HTTPConnection.java:4082) ~[grinder-httpclient-3.9.1.jar:na] -----------------------socket 사용해서 Upload 할경우 로그----------------- 14:56:46,010 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 14:56:46,010 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [stderr] 14:56:46,010 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 14:56:46,011 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to TRACE 14:56:46,011 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [filtered_stderr] to Logger[ROOT] 14:56:46,012 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [filtered_stdout] to Logger[ROOT] 14:56:46,012 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [tcpproxy] to INFO 14:56:46,012 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [tcpproxy] to false 14:56:46,019 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 14:56:46,023 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@1d5b1dc - Registering current configuration as safe fallback point 2013-01-22 14:56:50,948 INFO serverqa3-KN-0: starting threads 2013-01-22 14:56:50,959 INFO serverqa3-KN-0: will shut down after 60000 ms [ERROR] Connection refused [ERROR] Connection refused [ERROR] Connection refused [ERROR] Connection refused [ERROR] Connection refused [ERROR] Connection refused ....반복... 이런식으로 Connection refused 가 반복적으로 호출되네요.. -------------------------------------------------- |
Administrator
|
이건 호스트명이 없는 듯 한데요? 혹시 접속하시려는 URL의 호스트가 DNS에 등록되어 있지 않나요?
만약 그럴 경우 에이전트 PC상에 /etc/hosts 에 해당 호스트 IP와 호스트명을 등록하시거나.. 아니면.. http://www.cubrid.org/wiki_ngrinder/entry/how-to-change-dns 를 참조하셔서 화면상에서 지정해 주시면 됩니다. |
현재 테스트 환경은 hostname 없이 192.168.0.1 네트웍에서 controller / agent 들이 동작하고 있습니다.
DNS의 도움이 필요없는 상황이라.. 의심이 가는 사항은 lib 폴더에 넣은 jython-standalone-2.5.3.jar 로 인해 jython lib<-> python lib 버전 문제가 발생한건 아닌지 싶기도 하고.. 좀더 확인해 봐야 할것 같습니다. |
Administrator
|
제 생각에는 테스트에서 소켓으로 접속하려고 하는 타겟 서버의 URL 이 host 에 없는 것 같습니다.
agent 와 controller 간의 문제가 아닙니다. 일단 agent PC로 들어가셔서 telnet 테스트서버호스트명 포트 를 치셔서 접속 가능 여부를 확인하시는 게 필요할 것 같습니다. |
Administrator
|
In reply to this post by jung youngseok
해당 Exception을 자세히 살펴보니..
Signals that an error occurred while attempting to connect a * socket to a remote address and port. Typically, the remote * host cannot be reached because of an intervening firewall, or * if an intermediate router is down. 라고 되어 있네요. 그렇다면.. 앞서 설명드린대로 telnet 으로 테스트하실 서버가 Agent 로부터 접근 가능한지 여부를 먼저 확인해 보시는 게 좋을 것 같습니다. Firewall 이 문제일 듯 하네요. |
다른 업무로 확인이 늦어 졌네요..
말씀하신대로 Tomcat port와의 통신이 문제였던 것으로 보입니다. (부하테스트로 Tomcat이 다운되었던것 같습니다.) 재 부팅 후 socket 으로 데이터 전달이 정상적으로 되고 있네요. 문의사항에 적극적으로 답변해 주셔서 감사합니다. = 결론 = Lib 폴더에 jython-standalone-2.5.3.jar 올려 놓으시면 socket 사용이 가능합니다. |
Free forum by Nabble | Edit this page |