2012-09-21 3 views
1

저는 서버를 사용하기위한 성능 테스트를 작성했습니다. 지금 당장이 작업을 수동으로 실행하지만 자동화하고 싶습니다. 대상 서버에서 서버 메트릭을 기록하고 입력 할 때 멈추는 python 스크립트를 실행합니다. 테스터 머신에서 JMeter 테스트를 반복하고, 타임 스탬프를 설정하고 로그에 이름을 지정하고 테스트를 실행하는 bash 스크립트를 실행합니다.서버 스크립트 시작 및 중지

bash 스크립트가 전체 프로세스를 구동 할 수 있도록이 두 항목을 묶어서 표시하고 싶지만이 작업을 가장 효과적으로 수행하는 방법을 잘 모르겠습니다. ssh를 통해 파이썬 스크립트를 시작할 수는 있지만 테스트가 끝나면 어떻게 멈출 수 있습니까? ssh에서 할 수 있다면 기존 구성을 망칠 필요가 없으며 큰 승리입니다. 파이썬 스크립트는 아주 간단합니다. 도움이된다면 다시 쓸 수 있습니다.

답변

1

가장 쉬운 해결책은 아마도 Python 스크립트가 신호에 응답하게하는 것입니다. 물론 스크립트가 정리를 필요로하지 않는다면 스크립트를 SIGKILL 할 수 있지만 실제로 스크립트가 종료 요청을 처리하는 것이 더 깨끗해 보입니다. SIGHUP은 대중적인 선택 일 수 있습니다. 문서 here

kill 명령으로 신호를 보낼 수 있으므로 스크립트의 PID를 알고 있으면 ssh를 통해 신호를 보내는 데 문제가 없습니다. 이 문제의 일반적인 해결책은 스크립트를 시작할 때/var/run에있는 파일에 pid를 넣는 것입니다. (데비안/우분투 시스템을 가지고 있다면 아마도 여기에 많은 쓸데없는 일을 할 start-stop-daemon 유틸리티가 있다는 것을 알게 될 것입니다.)

또 다른 접근 방식으로, 집중적으로, 알려진 위치에 FIFO (named pipe)를 생성하고, 현재 stdin을 사용하는 것과 같이 기본적으로 사용합니다. 서버는 파이프로부터의 입력을 기다리고, 명령으로 인식하는 것을 얻으면, 명령 (예 : "quit"). 그것은 과도한 목적 일 수 있지만 단일 해머보다 더 명확한 의사 소통 채널이라는 장점이 있습니다.

+0

아하!, 감사합니다, rici! 훌륭한 아이디어와 나는 이제 새로운 아이디어를 테스트합니다. 가장 간단한 해결책 인 것처럼 첫 번째 제안을 먼저 시도해 보겠습니다. 나는 신호 라이브러리를 완전히 간과했는데, 이것은 필자가 상상했던 것처럼 보입니다. 나는 해결책을 찾으러 떠난다. –

+0

대답은 좋지만, 몇 가지 시도한 후에 jmeter에서 OS Process sampler를 사용하기로 결정했습니다. 하나의 데이터 샘플을 수집하고 로그를 업데이트하기 위해 원샷으로 실행하기 위해 메트릭 수집 스크립트를 다시 작성했습니다. 이제 클라이언트 측에서 샘플링에 첨부 할 수 있습니다. 이를 통해 jmeter 테스트를 독립 실행 형으로 실행하고 동일한 출력을 얻을 수 있습니다. 나는 아직도 그걸 가지고 좀 더 놀아야하지만, 지금까지는 좋아 보인다. –