본문 바로가기

개발/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

반응형