외부 프로세스 실행 관련 문의

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

외부 프로세스 실행 관련 문의

sanghoon
안녕하세요
ngrinder에서 외부 프로세스나 실행 파일을 포함시켜서 agent에 배포가 가능한지 문의드립니다.
또한, jython의 subprocess 이 지원 되는지도 궁금합니다.
Reply | Threaded
Open this post in threaded view
|

Re: 외부 프로세스 실행 관련 문의

junoyoon
Administrator
실행 파일에 대한 업로드는 제한이 되어 있습니다. 단 다음과 같이 우회 하시면 됩니다.

1. lib 폴더에 실행파일의 확장자를 jar 로 바꾸어 업로드.
2. 에이전트 스크립트에서 다음 명령어 실행으로 파일명 변경
    Runtime.getRuntime().exec("./mv ./lib/블라블라.jar ./lib/블라블라")
    Runtime.getRuntime().exec("./chmod 755  ./lib/블라블라")
    이경우 여러 스크립트에서 실행되게 되므로, 절적히 가딩 해주셔야 합니다.
3. 프로세스 실행
    Runtime.getRuntime().exec("./lib/블라블라")

subprocess 를 사용해 보지는 않았는데, 안될 이유는 없습니다.

그러나 security 모드 활성화 시에는 위의 모든 방법도 동작하지 않습니다.
실행파일 실행은 치명적인 보안 문제를 발생시킬 수 있기 때문입니다.

한가지 고려해야할 점은 메모리 사이즈 입니다. ngrinder agent 는 현재 가용 메모리중 100MB를 제외한 나머지 메모리를 프로세스가 나눠서 사용합니다. 단 프로세스별 메모리는 1G를 넘기지 못합니다.
따라서 4G 짜리 시스템이라면 프로세스를 2개 띄우것으로 설정할시 OS가 1G 정도를 쓸꺼고 1G 정도가 다른 프로세스 실행을 위해 남을 수 있을 겁니다.

곧 릴리즈될 ngrinder 3.1.3 버전은 dll 과 so 파일이 배포가능하고, 이를 JNA로 묶어서 실행할수 있습니다. 또 사용자가 메모리 여유분도 설정 가능하게 됩니다.