nGrinder를 통한 성능테스트

개미는뚠뚠·2024년 8월 1일
1

개발지식

목록 보기
11/16
post-thumbnail

🍞0. 설치

nGrinder Git-hub -> https://github.com/naver/ngrinder/releases

해당 URL에 접속 후 nGrinder-controller.war 파일을 다운로드 한다.
(나는 사진과 다르게 3.8.5 version을 받았다)


🍞1. 서버 배치

filezilla 혹은 서버 MobaXterm 를 통해 특정 경로에 해당 war파일을 배치한다.


🍞2. nGrinder Client 설정 및 가동

java -jar ngrinder-controller-{version}.war --port=8300

위의 명령어를 터미널에 실행시켜주면 다음과 같이 Controller 서버가 가동이 된다.

※ 위와 같이 제대로 진행하였으나 동작이 제대로 안된다면 서버 내 방화벽을 확인해야한다.

나는 해당 부분에 8300번 포트가 지정이 안 되어 다음과 같이 추가해주었다.

1. 방화벽 리스트 확인 : firewall-cmd --list-all
2. 방화벽 8300 포트 설정 : firewall-cmd --zone=public --add-port=8300/tcp --permanent
3. 방화벽 재구동 : firewall-cmd --reload

해당 조치 후 정상적으로 Controller 페이지가 뜨는 것을 확인할 수 있을 것이다.


🍞3. nGrinder Agent 설정

실행한 Controller 화면에서 로그인을 진행한다.(최초 계정은 admin/admin)

이후 우측 상단에 계정 텝을 클릭하고 Download Agent 버튼을 통해 tar파일을 다운로드 한다.

Controller와 같이 똑같이 서버 내 파일을 배치 시켜주고, 아래 명령어로 tar파일을 풀어준다(나는 이미 풀었다).

tar -xvf ngrinder-agent-{version}.tar

tar 파일 풀기가 끝났다면

vi /home/{User}/.ngrinder_agent/agent.conf

명령어를 통해 agent.conf 파일에 접근하고 지정한 주석들을 풀어주거나 다음과 같이 작성한다.

마지막으로 아까 풀었던 nGrinder agnet 디렉토리로 돌아와 ./run_agent.sh 를 입력하면 Controller와 agent가 연결되는 것을 확인할 수 있다(Controller의 Agent Management를 통해 확인 가능).


🍞4. 성능테스트 스크립트 작성

Controller 최상단의 Script메뉴로 진입하여, Create 버튼을 누른다.

이후 script명과 테스트를 수행할 URL 을 작성하여 Create 버튼을 누른다.

※ 혹여나 Header, Cookie, Param이 필요한 경우 Show Advenced Configuration 버튼을 통해 추가한다.

Create 버튼을 누르면 아래와 같이 스크립트를 작성할 수 있는 화면이 나오는데 기본적으로 어느정도 작성은 되어있고, 나는 다음과 같이 작성하였다(언어는 Groovy다).

import static net.grinder.script.Grinder.grinder
import static org.junit.Assert.*
import static org.hamcrest.Matchers.*
import net.grinder.script.GTest
import net.grinder.script.Grinder
import net.grinder.scriptengine.groovy.junit.GrinderRunner
import net.grinder.scriptengine.groovy.junit.annotation.BeforeProcess
import net.grinder.scriptengine.groovy.junit.annotation.BeforeThread
// import static net.grinder.util.GrinderUtils.* // You can use this if you're using nGrinder after 3.2.3
import org.junit.Before
import org.junit.BeforeClass
import org.junit.Test
import org.junit.runner.RunWith

import org.ngrinder.http.HTTPRequest
import org.ngrinder.http.HTTPRequestControl
import org.ngrinder.http.HTTPResponse
import org.ngrinder.http.cookie.Cookie
import org.ngrinder.http.cookie.CookieManager

/**
* A simple example using the HTTP plugin that shows the retrieval of a single page via HTTP.
*
* This script is automatically generated by ngrinder.
*
* @author admin
*/
@RunWith(GrinderRunner)
class TestRunner {

	public static GTest test
	public static HTTPRequest request
	public static Map<String, String> headers = [:]
	public static Map<String, Object> params = [:]
	public static List<Cookie> cookies = []

	@BeforeProcess
	public static void beforeProcess() {
		HTTPRequestControl.setConnectionTimeout(300000)
		test = new GTest(1, "아이피")
		request = new HTTPRequest()

		// Set cookie data
		cookies.add(new Cookie("인증 쿠키 key", "인증 쿠키 value", "아이피", "/", Integer.MAX_VALUE))

		grinder.logger.info("before process.")
	}

	@BeforeThread
	public void beforeThread() {
		test.record(this, "test")
		grinder.statistics.delayReports = true
		grinder.logger.info("before thread.")
	}

	@Before
	public void before() {
		request.setHeaders(headers)
		CookieManager.addCookies(cookies)
		grinder.logger.info("before. init headers and cookies")
	}

	@Test
	public void test() {
		HTTPResponse response = request.GET("http://아이피/경로", params)

		if (response.statusCode == 301 || response.statusCode == 302) {
			grinder.logger.warn("Warning. The response may not be correct. The response code was {}.", response.statusCode)
		} else {
			assertThat(response.statusCode, is(200))
		}
	}
}

작성을 완료했다면, 우측 상단의 save 버튼을 누르고, 스크립트를 저장할 수 있다.


🍞5. 성능테스트 진행

최상단의 performance Test 메뉴로 진입한다(내가 이전에 테스트 했던 기록이 남아있음).

이후 Create Test를 통해 신규로 진행할 테스트를 등록해줘야 한다.


나는 다음과 같이 작성했고, 간단히 아는 것만 설명하자면

0. Test_Name , Description : 테스트 명칭과 설명
1. Agent : 연결된 Agent 갯수
2. Vuser per agent : 유저
3. Process : 프로세스 갯수
4. threads : 스레드 갯수
5. Script : 아까 작성한 스크립트를 지정
6. Duration : 테스트 시간

테스트 등록 후 Save and Start 버튼을 통해 테스트를 수행한다.


🍞6. 성능테스트 결과 확인

기본적으로 테스트 진행이 완료되면 아래와 같은 화면이 나오는데 요약내용, 상세결과, log 파일 등 다양한 성능테스트 결과를 확인할 수 있다.

0개의 댓글