2017-12-20 3 views
0

일부 Python 스크립트로 대상 호스트에서 JMeter-server를 시작해야합니다. Jmeter는 /tmp/jmeter-3sc0ppq5/과 같은 임시 디렉토리가 있습니다. 스크립트 내부에서, 나는 파일을 생성하고 bin에 자신의 기본 디렉토리에 출연 한 데 필요한`의 일부 BeanShell이다가/ 디렉토리 :Python 스크립트, 기본 디렉토리로 Jmeter 서버 시작

File file = new File('errors' + File.separator + fileName); 
file.getParentFile().mkdirs(); 

그러나 마지막으로 나타나는 그것은`(내 파이썬 스크립트 (단순화 뿐만 아니라 JMeter를-server.log에 파일 /루트/)) :

stdin, stdout, stderr = ssh.exec_command('cd /tmp/jmeter-3sc0ppq5/bin/') 
run_jmeter_server_cmd = 'nohup java -jar "/tmp/jmeter-3sc0ppq5/bin/ApacheJMeter.jar" -Duser.dir=/tmp/jmeter-3sc0ppq5/bin/ApacheJMeter.jar -Dserver_port=11111 -s -j jmeter-server.log > /dev/null 2>&1' 
command = 'echo $$; exec ' + run_jmeter_server_cmd 
stdin, stdout, stderr = ssh.exec_command(command) 
pid = int(stdout.readline()) 

보시다시피

도이 user.dir D를 보내려고 irectory를 명시 적으로. JMeter를-server.log에은에/루트 나타나고있다/그러나이 JMeter를 프로세스가 올바른 디렉토리에서 모든 CONFIGS 소요 말한다 :

2017-12-20 09:26:49,551 INFO o.a.j.u.JMeterUtils: Setting Locale to en_DK 
2017-12-20 09:26:49,566 INFO o.a.j.JMeter: Loading user properties from: /tmp/jmeter-3sc0ppq5/bin/user.properties 
2017-12-20 09:26:49,567 INFO o.a.j.JMeter: Loading system properties from: /tmp/jmeter-3sc0ppq5/bin/system.properties 
2017-12-20 09:26:49,567 INFO o.a.j.JMeter: Setting System property: java.rmi.server.hostname=loadtest08-qa 
2017-12-20 09:26:49,567 INFO o.a.j.JMeter: Setting System property: user.dir=/tmp/jmeter-3sc0ppq5/bin/ 
2017-12-20 09:26:49,567 INFO o.a.j.JMeter: Setting System property: server_port=10001 
.............. 
2017-12-20 09:26:49,580 INFO o.a.j.JMeter: JMeterHome=/tmp/jmeter-3sc0ppq5 
2017-12-20 09:26:49,580 INFO o.a.j.JMeter: user.dir =/tmp/jmeter-3sc0ppq5/bin/ 
2017-12-20 09:26:49,580 INFO o.a.j.JMeter: PWD  =/tmp/jmeter-3sc0ppq5/bin 

그러나 언급 한 바와 같이 스크립트에 의해 생성 된 모든 파일뿐만 아니라에/루트/디렉토리가는 JMeter를-server.log에

내가 찾은 해결책은 단 하나 하나에 실행하고 cd 명령을 결합,하지만 난 자바 프로세스에 대한 적절한 PID를 얻을 수있다 :

run_jmeter_server_cmd = 'cd /tmp/jmeter-3sc0ppq5/bin/ApacheJMeter.jar && nohup java -jar "/tmp/jmeter-3sc0ppq5/bin/ApacheJMeter.jar" -Duser.dir=/tmp/jmeter-3sc0ppq5/bin/ApacheJMeter.jar -Dserver_port=11111 -s -j jmeter-server.log > /dev/null 2>&1 

JMeter를 강제로 어떤 방법이 있나요 c를하지 않고 자신의 디렉토리를 사용하기 거기에?

+1

-JbaseDir =/tmp/jmeter-3sc0ppq5 /로 속성을 추가하고 스크립트에서 baseDir 속성을 사용하지 않는 이유는 무엇입니까? – user7294900

+0

예, 무슨 일이 벌어지고 있는지 알고 싶었지만 마침내이 해결책을 찾아야한다고 생각합니다. – v0devil

답변

0

기본 디렉토리를 속성으로 보내고 필요할 때 사용하는 것이 좋습니다.

당신은 server mode에서

-JbaseDir=/tmp/jmeter-3sc0ppq5/ 

로 사용 JMeter command line에 보낼 수 있습니다 당신은 -G 옵션을 사용해야 할 수도 있습니다 :

-G

설정 될 JMeter를 속성을 정의하는 데 사용됩니다 서버 내

0

내 ex

run_jmeter_server_cmd = 'nohup java -Duser.dir=/tmp/jmeter-3sc0ppq5/bin -Dserver_port=11111 -jar "/tmp/jmeter-3sc0ppq5/bin/ApacheJMeter.jar" -s -j jmeter-server.log > /dev/null 2>&1' 

그리고 예상대로 작업을 시작해야합니다 pectation는 JMeter가 지금과 같은 명령을 개정 호출 전에이 -Duser.dir=/tmp/jmeter-3sc0ppq5/bin 매개 변수 을 통과해야한다는 것입니다. 문제가있을 경우 jmeter.log 파일을 확인하십시오. 특히 o.a.j.s.FileServer:과 관련된 줄을 찾으십시오.

또한 jmeter.save.saveservice.base_prefix 속성 값으로 재생할 수 있으며 앞서 설명한 FileServer 클래스를 사용하여 현재 JMeter 홈 디렉터리를 동적으로 검색 할 수 있습니다.


는 또한 사용 가능한 다음 기회에 JSR223 Test Elements로 마이그레이션 고려 JMeter version 3.1it is recommended to use Groovy for any form of scripting에서 쳐다보고 알고 시작합니다.

+0

-D 변수의 위치는 중요하지 않습니다. – v0devil

관련 문제