13. 원격 테스트

JMeter 클라이언트 시스템이 성능 면에서 서버에 스트레스를 줄 수 있는 충분한 사용자를 시뮬레이션할 수 없거나 네트워크 수준에서 제한되는 경우 단일 JMeter 클라이언트에서 여러 원격 JMeter 엔진을 제어하는 ​​옵션이 있습니다. JMeter를 원격으로 실행하면 많은 저사양 컴퓨터에서 테스트를 복제할 수 있으므로 서버에서 더 큰 부하를 시뮬레이션할 수 있습니다. JMeter 클라이언트의 하나의 인스턴스는 원격 JMeter 인스턴스의 수를 제어하고 모든 데이터를 수집할 수 있습니다. 이것은 다음과 같은 기능을 제공합니다:

  • 로컬 머신에 테스트 샘플 저장
  • 단일 시스템에서 여러 JMeterEngine 관리
  • 테스트 계획을 각 서버에 복사할 필요가 없습니다. 클라이언트가 모든 서버에 테스트 계획을 보냅니다.

참고: 모든 서버에서 동일한 테스트 계획을 실행합니다. JMeter는 서버 간에 부하를 분산하지 않으며 각 서버는 전체 테스트 계획을 실행합니다. 따라서 1000개의 스레드를 설정하고 6개의 JMeter 서버가 있는 경우 6000개의 스레드를 주입하게 됩니다.

그러나 원격 모드는 동일한 수의 CLI 모드 테스트를 독립적으로 실행하는 것보다 더 많은 리소스를 사용합니다. 많은 서버 인스턴스가 사용되는 경우 클라이언트 네트워크 연결과 마찬가지로 클라이언트 JMeter에 과부하가 걸릴 수 있습니다. 이것은 Stripped 모드로 전환하여 개선되었지만(아래 참조) 클라이언트가 과부하되지 않았는지 항상 확인해야 합니다.

애플리케이션 서버에서 JMeterEngine을 실행할 수 있지만 이것이 애플리케이션 서버에 처리 오버헤드를 추가하므로 테스트 결과가 다소 손상된다는 사실을 염두에 두어야 합니다. 권장되는 접근 방식은 JMeter 엔진을 실행하도록 구성한 애플리케이션 서버와 동일한 이더넷 세그먼트에 하나 이상의 머신을 두는 것입니다. 이렇게 하면 애플리케이션 서버 자체의 성능에 영향을 미치지 않으면서 테스트 결과에 대한 네트워크의 영향을 최소화할 수 있습니다.

0단계: 노드 구성

모든 노드(클라이언트 및 서버):

  • 정확히 동일한 버전의 JMeter를 실행하고 있습니다.
  • 모든 시스템에서 동일한 버전의 Java를 사용하고 있습니다. 다른 버전의 Java를 사용하면 작동할 수 있지만 권장하지 않습니다.
  • SSL을 통한 RMI에 대한 유효한 키 저장소가 있거나 SSL 사용을 비활성화했습니다.

테스트에서 데이터 파일을 사용하는 경우 이러한 파일은 클라이언트에서 전송되지 않으므로 각 서버의 적절한 디렉토리에서 사용할 수 있는지 확인하십시오 . 필요한 경우 각 서버 에서 user.properties 또는 system.properties 파일을 편집하여 속성에 대해 다른 값을 정의할 수 있습니다 . 이러한 속성은 서버가 시작될 때 선택되며 동작(예: 다른 원격 서버에 연결)에 영향을 주기 위해 테스트 계획에서 사용될 수 있습니다. 또는 테스트에 사용된 모든 데이터 파일에서 다른 콘텐츠를 사용합니다(예: 각 서버가 고유한 ID를 사용해야 하는 경우 데이터 파일 간에 이를 나눕니다).

1단계: 서버 시작

원격 노드에서 JMeter를 실행하려면 JMETER_HOME/bin/jmeter-server (unix) 또는 JMETER_HOME/bin/jmeter-server.bat (windows) 스크립트를 실행하여 실행하려는 모든 시스템에서 JMeter 서버 구성 요소를 시작하십시오.

다른 RMI 포트가 사용되지 않는 한 각 노드에는 하나의 JMeter 서버만 있을 수 있습니다.

JMeter 서버 애플리케이션은 RMI 레지스트리 자체를 시작합니다. RMI 레지스트리를 별도로 시작할 필요가 없습니다.

기본적으로 RMI는 JMeter 서버 엔진에 대한 동적 포트를 사용합니다. 이것은 방화벽에 문제를 일으킬 수 있으므로 JMeter 속성 server.rmi.localport 를 정의하여 이 포트 번호를 제어할 수 있습니다. 서버 엔진의 로컬 포트 ​​번호로 사용됩니다.

2단계: 클라이언트의 속성 파일에 서버 IP 추가

제어 JMeter 시스템에서 속성 파일을 편집합니다 . JMETER_HOME /bin/jmeter.properties 에서 " remote_hosts " 라는 속성을 찾고 실행 중인 JMeter 서버의 IP 주소 값을 추가합니다. 이러한 서버를 쉼표로 구분하여 여러 개 추가할 수 있습니다.

대신 -R 명령줄 옵션 을 사용 하여 사용할 원격 호스트를 지정할 수 있습니다. 이는 -r-Jremote_hosts={serverlist} 를 사용하는 것과 동일한 효과를 가 집니다. 예

jmeter -Rhost1,127.0.0.1,host2

JMeter 속성 server.exitaftertest=true 를 정의하면 단일 테스트를 실행한 후 서버가 종료됩니다. -X 플래그 도 참조하십시오 (아래에 설명됨)

3a단계: GUI 클라이언트에서 JMeter 클라이언트를 시작하여 구성 확인

이제 제어 JMeter 클라이언트를 시작할 준비가 되었습니다. MS-Windows의 경우 " bin/jmeter.bat " 스크립트를 사용하여 클라이언트를 시작합니다 . UNIX의 경우 " bin/jmeter " 스크립트를 사용합니다. Run 메뉴에 "Remote Start"와 "Remote Stop"이라는 두 개의 새로운 하위 메뉴가 포함되어 있음을 알 수 있습니다(그림 1 참조). 이러한 메뉴에는 특성 파일에서 설정한 클라이언트가 포함됩니다. 일반 JMeter 시작 및 중지 메뉴 항목 대신 원격 시작 및 중지를 사용하십시오.

그림 1 - 실행 메뉴
그림 1 - 실행 메뉴

3b단계: CLI 모드 클라이언트에서 JMeter 시작

GUI 모드는 디버깅에만 사용해야 하며 더 나은 대안으로 CLI 모드(명령줄) 클라이언트에서 원격 서버에서 테스트를 시작해야 합니다. 이를 수행하는 명령은 다음과 같습니다.

jmeter -n -t 스크립트.jmx -r

또는

jmeter -n -t script.jmx -R server1,server2,…

유용할 수 있는 기타 플래그:

-Gproperty=값
모든 서버에서 속성 정의(두 번 이상 나타날 수 있음)
-엑스
테스트가 끝나면 원격 서버를 종료합니다.

첫 번째 예제는 JMeter 속성 remote_hosts 에 정의된 모든 서버에서 테스트를 시작합니다 . 두 번째 예는 서버 목록에서 remote_hosts
를 정의한 다음 원격 서버에서 테스트를 시작합니다. 모든 원격 서버가 중지되면 명령줄 클라이언트가 종료됩니다.

13.1 SSL 설정

JMeter 4.0부터 RMI의 기본 전송 메커니즘은 SSL을 사용합니다. SSL이 작동하려면 키와 인증서가 필요합니다. 이러한 키를 직접 만들어야 합니다.

가장 간단한 설정은 연결하려는 모든 JMeter 서버 및 클라이언트에 대해 하나의 키/인증서 쌍을 사용하는 것입니다. JMeter는 rmi 라는 하나의 키(및 해당 인증서)를 포함하는 키 저장소를 생성하는 스크립트와 함께 제공됩니다 . 스크립트는 bin 디렉토리에 있으며 Windows 시스템( bin/create-rmi-keystore.bat ) 및 Unix 계열 시스템( bin/create-rmi-keystore.sh )에서 사용할 수 있습니다. 7일 동안 유효한 키 쌍을 생성하고 기본 암호는 ' changeit '입니다. bin 디렉토리 내부에서 호출하는 것이 좋습니다 .

스크립트를 실행하면 인증서에 포함될 일부 이름에 대한 몇 가지 질문이 표시됩니다. 키 저장소 도구가 허용하는 한 원하는 대로 입력할 수 있습니다. 이 값은 server.rmi.ssl.keystore.alias 속성과 일치해야 하며 , 기본값은 rmi 입니다. 키 저장소를 생성하기 위한 샘플 세션은 아래와 같습니다.

$ cd jmeter/bin
$ ./create-rmi-keystore.sh
당신의 성과 이름은 무엇입니까?
  [알 수 없음]: rmi
조직 단위의 이름은 무엇입니까?
  [알 수 없음]: 내 유닛 이름
귀하의 조직 이름은 무엇입니까?
  [알 수 없음]: 내 조직 이름
귀하의 도시 또는 지역의 이름은 무엇입니까?
  [알 수 없음]: 당신의 도시
귀하의 주 또는 도의 이름은 무엇입니까?
  [알 수 없음]: 귀하의 주
이 장치의 두 자리 국가 코드는 무엇입니까?
  [알 수 없음]: XY
CN=rmi, OU=내 부서 이름, O=내 조직 이름, L=귀하의 도시, ST=귀하의 주, C=XY가 맞습니까?
  [아니오]: 네

생성된 rmi_keystore.jks를 jmeter/bin 폴더에 복사하거나 'server.rmi.ssl.keystore.file' 속성에서 참조하세요.

RMI 의 기본 설정은 이 설정에서 작동해야 합니다. 분산 테스트 설정에 사용하려는 모든 JMeter 서버와 클라이언트에 bin/rmi_keystore.jks 파일을 복사합니다 .

13.2 수동으로 하기

어떤 경우에는 jmeter-server 스크립트가 작동하지 않을 수 있습니다(JMeter 개발자가 예상하지 못한 OS 플랫폼을 사용하는 경우). 더 수동 프로세스로 JMeter 서버를 시작하는 방법(위의 1단계)은 다음과 같습니다.

1a단계: RMI 레지스트리 시작

JMeter 2.3.1부터 RMI 레지스트리는 JMeter 서버에 의해 시작되므로 이 섹션은 일반적인 경우에는 적용되지 않습니다. 이전 동작으로 되돌리려면 서버 호스트 시스템에서 JMeter 속성 server.rmi.create=false 를 정의하고 아래 지침을 따르세요.

JMeter는 원격 통신 메커니즘으로 RMI(Remote Method Invocation)를 사용합니다. 따라서 JDK와 함께 제공되고 " bin " 디렉토리 에 있는 RMI 레지스트리 애플리케이션(이름이 " rmiregistry "임)을 실행해야 합니다. rmiregistry 를 실행하기 전에 다음 jar가 시스템 클래스 경로에 있는지 확인하십시오.

  • JMETER_HOME/lib/ext/ApacheJMeter_core.jar
  • JMETER_HOME/lib/jorphan.jar
  • JMETER_HOME/lib/logkit-2.0.jar
rmiregistry 애플리케이션은 특정 JMeter 클래스에 액세스해야 합니다. 매개변수 없이 rmiregistry 를 실행 합니다. 기본적으로 응용 프로그램은 포트 1099 를 수신합니다 .

1b단계: JMeter 서버 시작

RMI 레지스트리 애플리케이션이 실행되면 JMeter 서버를 시작하십시오. jmeter 시작 스크립트(" jmeter -s ")와 함께 " -s " 옵션을 사용하십시오 .

2단계와 3단계는 동일하게 유지됩니다.

13.3 팁

JMeter/RMI는 클라이언트에서 서버로의 연결이 필요합니다. 이것은 선택한 포트(기본값 1099 )를 사용합니다 .
JMeter/RMI는 서버에서 클라이언트로 샘플 결과를 반환하기 위해 역방향 연결도 필요합니다.
이들은 높은 번호의 포트를 사용합니다. 이러한 포트 는 jmeter.properties 의 client.rmi.localport
라는 jmeter 속성으로 제어할 수 있습니다 . 이 값이 0이 아니면 클라이언트 엔진의 로컬 포트 ​​번호에 대한 기준으로 사용됩니다. 현재 JMeter는 client.rmi.localport 에 정의된 포트로 시작하여 최대 3개의 포트를 엽니다.
. JMeter 클라이언트와 서버 사이에 방화벽이나 기타 네트워크 필터가 있는 경우 연결을 허용하도록 설정되어 있는지 확인해야 합니다. 필요한 경우 모니터링 소프트웨어를 사용하여 생성되는 트래픽을 표시합니다.

Suse Linux를 실행하는 경우 다음 팁이 도움이 될 수 있습니다. 기본 설치는 방화벽을 활성화할 수 있습니다. 이 경우 원격 테스트가 제대로 작동하지 않습니다. 다음 팁은 Sergey Ten이 제공했습니다.

연결이 거부된 경우 다음 옵션을 전달하여 디버깅을 켭니다.

rmiregistry -J-Dsun.rmi.log.debug=true \
     -J-Dsun.rmi.server.exceptionTrace=true \
     -J-Dsun.rmi.loader.logLevel=verbose \
     -J-Dsun.rmi.dgc.logLevel=verbose \
     -J-Dsun.rmi.transport.logLevel=자세한 정보 \
     -J-Dsun.rmi.transport.tcp.logLevel=verbose \

JMeter 2.3.1부터 RMI 레지스트리는 서버에 의해 시작됩니다. 그러나 옵션은 여전히 ​​JMeter 명령줄에서 전달할 수 있습니다. 예: " jmeter -s -Dsun.rmi.loader.logLevel=verbose "(즉, -J 접두사 생략). 또는 system.properties 파일 에서 속성을 정의할 수 있습니다 .

문제에 대한 해결책은 /etc/hosts 에서 루프백 127.0.0.1127.0.0.2 를 제거하는 것 입니다. 127.0.0.2 루프백을 사용할 수 없으면 jmeter-server 가 rmiregistry에 연결할 수 없습니다 . 다음 설정을 사용하여 문제를 해결하십시오.

바꾸다

`디렉토리 이름 $0`/jmeter -s "$@"

와 함께

HOST="-Djava.rmi.server.hostname=[컴퓨터_이름][컴퓨터_도메인] \
      -Djava.security.policy=`디렉터리 이름 $0`/[정책_파일]" \
`디렉토리 이름 $0`/jmeter $HOST -s "$@"

또한 정책 파일을 만들고 [computer_name][computer_domain] 줄을 /etc/hosts 에 추가합니다 .

JMeter 2.6부터 원격 테스트에 사용되는 RMI 통신 채널의 SSH 터널링을 더 잘 지원하기 위해:

  • 새 속성 " client.rmi.localport "는 RemoteSampleListenerImpl에서 사용하는 RMI 포트를 제어하도록 설정할 수 있습니다.
  • 로컬 머신의 포트를 사용하여 원격 엔드포인트로 SSH 터널을 통한 RMI 트래픽 터널링을 지원하기 위해 Java 시스템 속성 " java.rmi.server.hostname " 매개변수 를 사용하여 직접 지정된 경우 루프백 인터페이스를 사용할 수 있습니다. .

13.4 다른 포트 사용하기

기본적으로 JMeter는 표준 RMI 포트 1099 를 사용합니다 . 이것을 변경할 수 있습니다. 이것이 성공적으로 작동하려면 다음 모든 항목에 동의해야 합니다.

  • 서버 에서 새 포트 번호를 사용하여 rmiregistry 를 시작합니다.
  • 서버에서 정의된 server_port 속성으로 JMeter를 시작합니다.
  • 클라이언트 에서 새 원격 호스트:포트 설정 을 포함하도록 remote_hosts 속성을 업데이트합니다.

JMeter 2.1.1부터 jmeter-server 스크립트는 포트 변경을 지원합니다. 예를 들어 포트 1664 를 사용하려고 한다고 가정합니다 (아마도 1099 가 이미 사용 중일 수 있음).

Windows에서(DOS 상자에서)
C:\JMETER> SET SERVER_PORT=1664
C:\JMETER> JMETER-SERVER [기타 옵션]
유닉스:
$ SERVER_PORT=1664 jmeter-server [기타 옵션]
[NB 환경 변수에 대문자 사용]

두 경우 모두 스크립트는 지정된 포트에서 rmiregistry를 시작한 다음 " server_port " 속성을 정의한 서버 모드에서 JMeter를 시작합니다.

선택한 포트는 서버 jmeter.log 파일에 기록됩니다( rmiregistry 는 로그 파일을 생성하지 않습니다).

13.5 다른 샘플 발신자 사용

테스트 계획의 리스너는 결과를 지정된 파일에 기록하는 클라이언트 JMeter로 결과를 다시 보냅니다. 기본적으로 샘플은 생성될 때 동기적으로 다시 전송됩니다. 이는 서버 테스트의 최대 처리량에 영향을 줄 수 있습니다. 스레드가 계속되기 전에 샘플 결과를 다시 보내야 합니다. 이 동작을 변경하도록 설정할 수 있는 몇 가지 JMeter 속성이 있습니다.

방법
샘플 전송 모드 - 기본값은 2.9부터 StrippedBatch 입니다. 클라이언트 노드에서 설정해야 합니다.
기준
샘플이 생성되는 즉시 동기적으로 샘플을 보냅니다.
잡고 있다
실행이 끝날 때까지 배열에 샘플을 보관합니다. 이것은 서버에서 많은 메모리를 사용할 수 있으므로 권장하지 않습니다.
디스크스토어
실행이 끝날 때까지 디스크 파일( java.io.temp 아래)에 샘플을 저장 합니다. 직렬화된 데이터 파일은 JVM 종료 시 삭제됩니다.
StrippedDiskStore
성공적인 샘플에서 responseData를 제거하고 DiskStore 발신자를 사용하여 샘플을 보냅니다.
일괄
카운트( num_sample_threshold ) 또는 시간( time_threshold )이 임계값을 초과하면 저장된 샘플을 전송합니다. 이 지점에서 샘플은 동기적으로 전송됩니다. 다음 속성을 사용하여 서버에서 임계값을 구성할 수 있습니다.
num_sample_threshold
누적할 샘플 수, 기본 100
time_threshold
시간 임계값, 기본 60000ms = 60초
아래에 설명된 비동기 모드도 참조하십시오.
통계
개수나 시간이 임계값을 초과하면 요약 샘플을 보냅니다. 샘플은 스레드 그룹 이름과 샘플 레이블로 요약됩니다. 다음 필드가 누적됩니다.
  • 경과 시간
  • 지연 시간
  • 바이트
  • 샘플 수
  • 오류 수
샘플 간에 다른 다른 필드는 손실됩니다.
벗겨진
성공적인 샘플에서 responseData 제거
StrippedBatch
성공적인 샘플에서 responseData를 제거하고 Batch sender를 사용하여 보냅니다.
비동기
샘플은 일시적으로 로컬 대기열에 저장됩니다. 별도의 작업자 스레드가 샘플을 보냅니다. 이렇게 하면 결과가 클라이언트로 다시 전송될 때까지 기다리지 않고 테스트 스레드를 계속할 수 있습니다. 그러나 샘플이 전송될 수 있는 것보다 빠르게 생성되는 경우 큐는 결국 가득 차고 샘플러 스레드는 일부 샘플이 큐에서 비워질 때까지 차단됩니다. 이 모드는 샘플 생성에서 피크를 부드럽게 하는 데 유용합니다. 대기열 크기는 서버 노드 에서 JMeter 속성 asynch.batch.queue.size (기본값 100 )를 설정하여 조정할 수 있습니다 .
StrippedAsync
성공적인 샘플에서 responseData를 제거하고 Async sender를 사용하여 보냅니다.
맞춤형 구현
모드 매개변수를 사용자 정의 샘플 발신자 클래스 이름으로 설정하십시오. 이것은 인터페이스 SampleSender 를 구현해야 하고 RemoteSampleListener 유형의 단일 매개변수를 사용하는 생성자가 있어야 합니다 .
Stripped 모드 제품군 은 responseData 를 제거하므로 이전 responseData 에 의존하는 일부 요소가 작동하지 않습니다.
이 기능을 구현하는 더 효율적인 방법이 항상 있기 때문에 이것은 실제로 문제가 되지 않습니다.

다음 속성은 배치통계 모드에 적용됩니다.

num_sample_threshold
배치의 샘플 수(기본값 100 )
time_threshold
대기할 밀리초 수(기본값 60초)

13.6 시작에 실패한 노드 다루기

대규모 테스트의 경우 원격 서버의 일부를 사용할 수 없거나 다운될 가능성이 있습니다. 예를 들어 자동화 스크립트를 사용하여 많은 클라우드 머신을 할당하고 이를 생성기로 사용할 때 클라우드 문제로 인해 요청된 머신 중 일부가 부팅에 실패할 수 있습니다. JMeter 2.13부터 이 동작을 제어하는 ​​새로운 속성이 있습니다.

먼저 실패한 노드가 부팅을 약간 지연시키기 위해 초기화 시도를 재시도하는 것이 좋습니다. 재시도를 활성화하려면 client.tries 속성을 총 연결 시도 횟수로 설정해야 합니다. 기본적으로 한 번만 시도합니다. 재시도 지연을 제어하려면 client.retries_delay 속성을 시도 사이에 절전 모드로 전환하는 시간(밀리초)으로 설정합니다.

마지막으로 초기화에 성공하고 실패한 노드를 건너뛴 생성기로 테스트를 계속 실행할 수 있습니다. 이를 활성화하려면 client.continue_on_fail=true 속성을 설정하십시오.

13.7 보안 관리자 사용하기

분산 환경에서 JMeter를 실행할 때 JMeter는 기본적으로 서버 측과 클라이언트 측 모두에서 원격 실행 에이전트라는 사실을 알아야 합니다. 이것은 JMeter 클라이언트 또는 서버 중 하나를 손상시킨 후 악의적인 당사자가 추가 액세스 권한을 얻는 데 사용할 수 있습니다. 이 Java에는 잠재적인 위험한 작업이 실행되기 전에 JVM에서 요청하는 보안 관리자 개념이 있습니다. 이러한 작업은 호스트 이름 확인, 파일 생성 또는 읽기, OS에서 명령 실행 등일 수 있습니다.

보안 관리자는 Java 시스템 속성 java.security.managerjava.security.policy 를 설정하여 활성화할 수 있습니다 . 응용 프로그램 제어의 빠른 둘러 보기를 살펴보십시오 .

setenv.sh (또는 Windows의 경우 setenv.bat ) 의 새로운 메커니즘을 사용하여 ${JMETER_HOME}/bin/setenv.sh 에 다음 코드 스니펫을 추가하여 보안 관리자를 활성화할 수 있습니다 .

JVM_ARGS=" \
   -Djava.security.manager \
   -Djava.security.policy=${JMETER_HOME}/bin/java.policy \
   -Djmeter.home=${JMETER_HOME} \
"

JVM은 이제 ${JMETER_HOME}/bin/java.policy 파일에 정의된 정책을 전역적으로 정의된 정책에 추가합니다. 정의가 정책의 유일한 소스가 되도록 하려면 java.security.policy 속성을 설정할 때 하나 대신 두 개의 등호를 사용하십시오 .

정책은 사용 사례에 따라 다르며 올바른 제한 및 허용 작업을 찾는 데 시간이 걸릴 수 있습니다. Java는 java.security.debug 속성을 사용하여 필요한 정책을 찾는 데 도움을 줄 수 있습니다 . 액세스 로 설정하면 허용할 것인지 묻는 모든 권한이 기록됩니다. setenv.sh 에 다음 줄을 추가하기만 하면 됩니다 .

JVM_ARGS="${JVM_ARGS} -Djava.security.debug=액세스"

${JMETER_HOME} 값으로 Java 시스템 속성 jmeter.home 을 정의하는 것이 약간 이상하게 보일 수 있습니다 . 이 변수는 파일 시스템 액세스를 제한하고 JMeters 구성 및 라이브러리만 읽을 수 있도록 허용하고 특정 위치에 대해서만 쓰기 액세스를 제한하기 위해 예제 java.policy 에서 사용됩니다.

간단한 원격 테스트를 위해 다음 정책 정의 파일을 사용했습니다. 더 복잡한 시나리오를 실행할 때 정책을 조정해야 할 것입니다. 테스트 계획은 jmeter-testplans 라는 디렉토리 아래의 사용자 홈 디렉토리 어딘가에 있습니다. 샘플 java.policy 는 다음과 같습니다.

부여 codeBase "파일:${jmeter.home}/bin/*" {
  권한 java.security.AllPermission;
};

부여 codeBase "파일:${jmeter.home}/lib/jorphan.jar" {
  권한 java.security.AllPermission;
};

부여 codeBase "파일:${jmeter.home}/lib/log4j-api-2.11.1.jar" {
  권한 java.security.AllPermission;
};

부여 codeBase "파일:${jmeter.home}/lib/log4j-slf4j-impl-2.11.1.jar" {
  권한 java.security.AllPermission;
};

부여 codeBase "파일:${jmeter.home}/lib/slf4j-api-1.7.25.jar" {
  권한 java.security.AllPermission;
};

부여 codeBase "파일:${jmeter.home}/lib/log4j-core-2.11.1.jar" {
  권한 java.security.AllPermission;
};

부여 codeBase "파일:${jmeter.home}/lib/ext/*" {
  권한 java.security.AllPermission;
};

부여 codeBase "파일:${jmeter.home}/lib/httpclient-4.5.6.jar" {
  권한 java.net.SocketPermission "*", "연결, 해결";
};

부여 codeBase "파일:${jmeter.home}/lib/darcula.jar" {
  권한 java.lang.RuntimePermission "modifyThreadGroup";
};

부여 codeBase "파일:${jmeter.home}/lib/xercesImpl-2.12.0.jar" {
  권한 java.io.FilePermission "${java.home}/lib/xerces.properties", "읽기";
};

부여 codeBase "파일:${jmeter.home}/lib/groovy-all-2.4.15.jar" {
  권한 groovy.security.GroovyCodeSourcePermission "/groovy/script";
  권한 java.lang.RuntimePermission "accessClassInPackage.sun.reflect";
  권한 java.lang.RuntimePermission "getProtectionDomain";
};

승인하다 {
  권한 java.io.FilePermission "${jmeter.home}/backups", "읽기, 쓰기";
  권한 java.io.FilePermission "${jmeter.home}/backups/*", "읽기, 쓰기, 삭제";
  권한 java.io.FilePermission "${jmeter.home}/bin/upgrade.properties", "읽기";
  권한 java.io.FilePermission "${jmeter.home}/lib/ext/-", "읽기";
  권한 java.io.FilePermission "${jmeter.home}/lib/ext", "읽기";
  권한 java.io.FilePermission "${jmeter.home}/lib/-", "읽기";
  권한 java.io.FilePermission "${user.home}/jmeter-testplans/-", "읽기, 쓰기";
  권한 java.io.SerializablePermission "enableSubclassImplementation";
  권한 java.lang.reflect.ReflectPermission "suppressAccessChecks";
  권한 java.lang.RuntimePermission "accessClassInPackage.jdk.internal.dynalink.support";
  권한 java.lang.RuntimePermission "accessClassInPackage.sun.awt";
  권한 java.lang.RuntimePermission "accessClassInPackage.sun.misc";
  권한 java.lang.RuntimePermission "accessClassInPackage.sun.swing";
  권한 java.lang.RuntimePermission "accessDeclaredMembers";
  권한 java.lang.RuntimePermission "createClassLoader";
  권한 java.lang.RuntimePermission "createSecurityManager";
  권한 java.lang.RuntimePermission "getClassLoader";
  권한 java.lang.RuntimePermission "getenv.*";
  권한 java.lang.RuntimePermission "nashorn.createGlobal";
  권한 java.util.PropertyPermission "*", "읽기";
};
  
java.security.AllPermission 의 사용은 테스트 계획을 작동시키는 쉬운 방법이지만 보안 경로에 대한 위험한 지름길일 수 있습니다.
Go to top