今年の冬はお家ベンチマーク環境を暖房にする気持ちでベンチマークをやっていこうと思う。
まずは環境構築から。
環境
- 2年前に組んだこの構成のPCが2台あるので、これを今回のベンチマークサーバにする
- メモリは今32GBになってるけど今後検討(データサイズが大きくなると初期化に時間がかかるので)
- Ubuntu 20.04 LTSをinstall
MySQL install
現時点で最新の8.0.22をインストールする。 (おうち環境なので、ほとんどrootやgrant all権限のユーザを使っています)
minimalのtarファイルを落としてきてディレクトリをいじりつつインストール
## prepare mkdir /mysql groupadd mysql useradd -r -g mysql -s /bin/false mysql ## download & install wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar tar xf mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar xz -dc mysql-8.0.22-linux-glibc2.17-x86_64-minimal.tar.xz | tar xfv - mv mysql-8.0.22-linux-glibc2.17-x86_64-minimal /mysql cd /mysql mv mysql-8.0.22-linux-glibc2.17-x86_64-minimal/* . rm -rf mysql-8.0.22-linux-glibc2.17-x86_64-minimal/ chown -R mysql:mysql /mysql ## configure mkdir logs chown -R mysql:mysql logs # set /etc/my.cnf # see below (my.cnf) ## initialize & start bin/mysqld --initialize --user=mysql # bin/mysql_ssl_rsa_setup # bin/mysqld_safe --user=mysql &
DBの初期化とかuser作成は適宜やる
my.cnf
install中に用意したmy.cnfは一旦こんな感じ。パラメータは今後変えていく
[mysqld] basedir = "/mysql/" datadir = "/mysql/data" character_sets_dir = "/mysql/share/charsets/" plugin_dir = "/mysql/lib/plugin/" log_bin = "/mysql/logs/binlog" log_bin_index = "/mysql/logs/binlog.index" relay_log = "/mysql/logs/relay-log" relay_log_index = "/mysql/logs/relay-log.index" log_error = "/mysql/logs/mysqld.err" general_log_file = "/mysql/logs/general.log" slow_query_log_file = "/mysql/logs/slow.log" innodb_buffer_pool_size = 10GB
sysbench簡単なテスト
ほぼdefaultの設定だけど一旦sysbenchを流してみる
- prepare
server-01でデータ用意
sysbench /usr/share/sysbench/oltp_read_write.lua \ --db-driver=mysql \ --tables=3 \ --table-size=1000000 \ --mysql-host=127.0.0.1 \ --mysql-user=sysbench \ --mysql-password=sysbench \ --mysql-db=sysbench \ --db-ps-mode=disable \ prepare
server-02からoltp_read_only
sysbench /usr/share/sysbench/oltp_read_only.lua \ --db-driver=mysql \ --tables=3 \ --table-size=1000000 \ --mysql-host=192.168.x.y \ --mysql-user=sysbench \ --mysql-password=sysbench \ --mysql-db=sysbench \ --db-ps-mode=disable \ --time=60 \ --threads=10 \ run
- thread数を10 ~ 50で変化させた様子 (CPUとNetwork IO)
oltp_read_writeでthread数を10~70に変化させたときの様子
どちらも1Gb帯域のネットワークがボトルネックになっているように見える。 ここでは見ていないがDisk IOはチューニングすれば減らすこともできるので、CPUを使い切れないままネットワークの限界に引きづられるのは面白くない。
ということで次回は10Gb Network環境構築をします!