728x90
docker-compose를 사용하여 ngrinder 컨트롤러 및 에이전트를 설정하는 방법
1. Docker 및 Docker Compose 설치
2. Docker Compose 파일 생성
vim docker-compose.yml
version: '3.8'
services:
controller:
image: ngrinder/controller:latest
restart: always
container_name: controller
hostname: controller
sysctls:
- net.core.somaxconn=65000
ports:
- 8888:80
- 16001:16001
- 12000-12009:12000-12009
volumes:
- /usr/share/zoneinfo/Asia/Seoul:/etc/localtime:ro
- ./ngrinder-controller-date:/opt/ngrinder-controller
agent1:
image: ngrinder/agent:latest
restart: always
container_name: agent1
hostname: agent1
sysctls:
- net.core.somaxconn=65000
ulimits:
memlock:
soft: -1
hard: -1
nproc:
soft: 1024000
hard: 1024000
nofile:
soft: 1024000
hard: 1024000
links:
- controller:controller
volumes:
- /usr/share/zoneinfo/Asia/Seoul:/etc/localtime:ro
#- ./ngrinder-agent:/opt/ngrinder-agent
#- ./ngrinder-agent/agent.conf:/opt/ngrinder-agent/.ngrinder-agent/agent.conf
3. ngrinder 웹 콘솔 확인
http://localhost:8888
- 초기 계정 정보 : admin / admin
ngrinder controller - 에이전트 관리
4. 스크립트 생성
- 스크립트명 : sangchul.kr
- 테스트할 URL : https://sangchul.kr
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, "www.sangchul.kr")
request = new HTTPRequest()
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://www.sangchul.kr", 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))
}
}
}
728x90
성능 테스트
- 테스트명 : sangchul.kr
- 에이젠트 : 1
- 스크립트 : svn sangchul.kr.groovy
- 테스트 대상 서버 : www.sangchul.kr
5. 성능 테스트 보고서
참고URL
- https://github.com/naver/ngrinder/wiki/Architecture
- https://naver.github.io/ngrinder/
- https://github.com/anti1346/docker-ngrinder
728x90
'리눅스' 카테고리의 다른 글
카프카 producer와 consumer 테스트 (0) | 2021.12.22 |
---|---|
[draft] Apache Kafka(Zookeeper)를 클러스터 구성하는 방법 (0) | 2021.12.22 |
Let's Encrypt(certbot)에서 SSL 인증서를 발급받는 방법 (0) | 2021.12.16 |
[명령어] find 명령어 (0) | 2021.12.15 |
리눅스 쉘 프로그래밍에서 사용되는 일부 특수 변수(Special Variables) (0) | 2021.12.14 |