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' 카테고리의 다른 글
MySQL DB 데이터 삭제 시 데이터 복구 (0) | 2023.02.05 |
---|---|
고가용성 (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 |