본문 바로가기

개발/Database

MySQL sysbench 부하테스트

sysbench 를 사용하여 MySQL 부하테스트를 진행한다.

오픈소스로 H/W(CPU, Memory, I/O), MySQL/MariaDB 등 다양한 성능 테스트를 할 수 있다.

 

github : github.com/akopytov/sysbench

 

1. 설치 

## Linux ##
## Debian/Ubuntu
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash
sudo apt -y install sysbench
## RHEL/CentOS
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sudo yum -y install sysbench
## Fedora
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash	
sudo dnf -y install sysbench
## Arch Linux
sudo pacman -Suy sysbench

## macOS
# Add --with-postgresql if you need PostgreSQL support
brew install sysbench

## Windwos
# 1.0 버전부터 기본 Windows 빌드에 대한 지원 중단

2. 요구사항

## Debian/Ubuntu
apt -y install make automake libtool pkg-config libaio-dev
# For MySQL support
apt -y install libmysqlclient-dev libssl-dev
# For PostgreSQL support
apt -y install libpq-dev

## RHEL/CentOS
yum -y install make automake libtool pkgconfig libaio-devel
# For MySQL support, replace with mysql-devel on RHEL/CentOS 5
yum -y install mariadb-devel openssl-devel
# For PostgreSQL support
yum -y install postgresql-devel
    
## Fedora
dnf -y install make automake libtool pkgconfig libaio-devel
# For MySQL support
dnf -y install mariadb-devel openssl-devel
# For PostgreSQL support
dnf -y install postgresql-devel

## macOS
# Assuming you have Xcode (or Xcode Command Line Tools) and Homebrew installed:
brew install automake libtool openssl pkg-config
# For MySQL support
brew install mysql
# For PostgreSQL support
brew install postgresql
# openssl is not linked by Homebrew, this is to avoid "ld: library not found for -lssl"
export LDFLAGS=-L/usr/local/opt/openssl/lib 

3. 빌드 & 설치

./autogen.sh
# Add --with-pgsql to build with PostgreSQL support
./configure
make -j
make install

 

[용법]

1. 일반 구문

sysbench [options]... [testname] [command] 

2. 옵션

옵션 설명 기본값
--threads 작업자 스레드 수 1
--events 총 요청수 제한 0 (0은 제한 없음을 의미)
--time 총 실행 시간 제한  0 (0은 제한 없음을 의미)
--warmup-time 초기 실행 시간 0
--rate 평균 트랜잭션 수 0 (무제한 속도)
--thread-init-timeout 작업자 스레드 초기회 대기시간 30
--thread-stack-size 스레드 스택 크기 32K
--report-interval 통계 중간 보고 간격 0 (중간 보고 비활성화)
--debug 더 많은 디버그 정보 false
--validate 테스트 결과 검증 false
--help 도움말 false
--verbosity 상세 수준 (0-중요 메시지, 5-디버그) 4
--percentile  통계 정보 표시 (백분위수) 95
--luajit-cmd LuaJIT 제어 명령 수행  

3. 예시

-- repare / oltp read only
sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench \
--mysql-password=sysbench --mysql-db=sysbench --table-size=5000000 \
--tables=5 /usr/local/share/sysbench/oltp_read_only.lua prepare

-- 500만 rows 테이블 5개 테스트 데이터 준비

-- run
sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --report-interval=2 \
--mysql-password=sysbench --mysql-db=sysbench --table-size=5000000 --warmup-time=30 \
--threads=10 --tables=5 /usr/local/share/sysbench/oltp_read_only.lua run

sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --report-interval=2 \
--mysql-password=sysbench --mysql-db=sysbench --table-size=5000000 --warmup-time=30 \
--threads=20 --tables=5 /usr/local/share/sysbench/oltp_read_only.lua run

sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --report-interval=2 \
--mysql-password=sysbench --mysql-db=sysbench --table-size=5000000 --warmup-time=30 \
--threads=50 --tables=5 /usr/local/share/sysbench/oltp_read_only.lua run

sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --report-interval=2 \
--mysql-password=sysbench --mysql-db=sysbench --table-size=5000000 --warmup-time=30 \
--threads=100 --tables=5 /usr/local/share/sysbench/oltp_read_only.lua run

-- cleanup
sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench \
--mysql-password=sysbench --mysql-db=sysbench --threads=4 --table-size=5000000 \
--tables=5 /usr/local/share/sysbench/oltp_read_only.lua cleanup

'개발 > Database' 카테고리의 다른 글

고가용성 (High Availability)  (0) 2020.11.12
DB Sharding  (0) 2020.11.09
MySQL 8.0 Remote 설정  (0) 2020.09.23
MySQL 8.0 Requested authentication method unknown to the client 이슈 해결  (0) 2020.09.23
Lock  (0) 2020.09.01