Cloud9からAurora MySQLにsysbenchで負荷をかけるメモ。
DevOps Guru for RDSで何らかのインサイトを出したいがために実施。
参考リンク
手順
Cloud9からAuroraに接続できるようにする。セキュリティグループの設定を忘れずに。
Admin:~/environment $ ENDPOINT=<エンドポイント> Admin:~/environment $ mysql -h ${ENDPOINT} -P 3306 -u admin -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 18 Server version: 5.7.12 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>
mydb
データベースを作っておく。
MySQL [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec) MySQL [(none)]> create database mydb; Query OK, 1 row affected (0.01 sec) MySQL [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mydb | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec) MySQL [(none)]>
sysbenchをインストールする。
Admin:~/environment $ curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash Detected operating system as amzn/2. Checking for curl... Detected curl... Downloading repository file: https://packagecloud.io/install/repositories/akopytov/sysbench/config_file.repo?os=amzn&dist=2&source=script done. Installing pygpgme to verify GPG signatures... Loaded plugins: extras_suggestions, langpacks, priorities, update-motd akopytov_sysbench-source/signature | 833 B 00:00:00 Retrieving key from https://packagecloud.io/akopytov/sysbench/gpgkey Importing GPG key 0x04DCFD39: Userid : "https://packagecloud.io/akopytov/sysbench-prerelease (https://packagecloud.io/docs#gpg_signing) <support@packagecloud.io>" Fingerprint: 9789 8d69 f99e e5ca c462 a0f8 cf10 4890 04dc fd39 From : https://packagecloud.io/akopytov/sysbench/gpgkey akopytov_sysbench-source/signature | 1.0 kB 00:00:00 !!! amzn2-core | 3.7 kB 00:00:00 akopytov_sysbench-source/primary | 2.0 kB 00:00:01 akopytov_sysbench-source 15/15 234 packages excluded due to repository priority protections Package pygpgme-0.3-9.amzn2.0.3.x86_64 already installed and latest version Nothing to do Installing yum-utils... Loaded plugins: extras_suggestions, langpacks, priorities, update-motd 234 packages excluded due to repository priority protections Package yum-utils-1.1.31-46.amzn2.0.1.noarch already installed and latest version Nothing to do Generating yum cache for akopytov_sysbench... Importing GPG key 0x04DCFD39: Userid : "https://packagecloud.io/akopytov/sysbench-prerelease (https://packagecloud.io/docs#gpg_signing) <support@packagecloud.io>" Fingerprint: 9789 8d69 f99e e5ca c462 a0f8 cf10 4890 04dc fd39 From : https://packagecloud.io/akopytov/sysbench/gpgkey Generating yum cache for akopytov_sysbench-source... The repository is setup! You can now install packages. Admin:~/environment $ sudo yum -y install sysbench Loaded plugins: extras_suggestions, langpacks, priorities, update-motd 234 packages excluded due to repository priority protections Resolving Dependencies --> Running transaction check ---> Package sysbench.x86_64 0:1.0.20-1.el7 will be installed --> Processing Dependency: libpq.so.5()(64bit) for package: sysbench-1.0.20-1.el7.x86_64 --> Running transaction check ---> Package postgresql-libs.x86_64 0:9.2.24-6.amzn2 will be installed --> Finished Dependency Resolution Dependencies Resolved =============================================================================================================================================================================================================================== Package Arch Version Repository Size =============================================================================================================================================================================================================================== Installing: sysbench x86_64 1.0.20-1.el7 akopytov_sysbench 430 k Installing for dependencies: postgresql-libs x86_64 9.2.24-6.amzn2 amzn2-core 232 k Transaction Summary =============================================================================================================================================================================================================================== Install 1 Package (+1 Dependent package) Total download size: 662 k Installed size: 1.8 M Downloading packages: (1/2): postgresql-libs-9.2.24-6.amzn2.x86_64.rpm | 232 kB 00:00:00 (2/2): sysbench-1.0.20-1.el7.x86_64.rpm | 430 kB 00:00:00 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 983 kB/s | 662 kB 00:00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction Warning: RPMDB altered outside of yum. Installing : postgresql-libs-9.2.24-6.amzn2.x86_64 1/2 Installing : sysbench-1.0.20-1.el7.x86_64 2/2 Verifying : sysbench-1.0.20-1.el7.x86_64 1/2 Verifying : postgresql-libs-9.2.24-6.amzn2.x86_64 2/2 Installed: sysbench.x86_64 0:1.0.20-1.el7 Dependency Installed: postgresql-libs.x86_64 0:9.2.24-6.amzn2 Complete!
テーブルを作成する。
PASSWORD=<パスワード> sysbench --db-driver=mysql \ --mysql-host=$ENDPOINT \ --mysql-user=admin \ --mysql-password=$PASSWORD \ --mysql-db=mydb \ oltp_read_write \ prepare
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2) Creating table 'sbtest1'... Inserting 10000 records into 'sbtest1' Creating a secondary index on 'sbtest1'...
負荷をかける。
sysbench --db-driver=mysql \ --mysql-host=$ENDPOINT \ --mysql-user=admin \ --mysql-password=$PASSWORD \ --mysql-db=mydb \ oltp_read_write \ run
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2) Running the test with following options: Number of threads: 1 Initializing random number generator from current time Initializing worker threads... Threads started! SQL statistics: queries performed: read: 3486 write: 996 other: 498 total: 4980 transactions: 249 (24.80 per sec.) queries: 4980 (496.10 per sec.) ignored errors: 0 (0.00 per sec.) reconnects: 0 (0.00 per sec.) General statistics: total time: 10.0364s total number of events: 249 Latency (ms): min: 37.91 avg: 40.30 max: 48.68 95th percentile: 43.39 sum: 10033.87 Threads fairness: events (avg/stddev): 249.0000/0.00 execution time (avg/stddev): 10.0339/0.00
これだと同時実行数が1なのでDB Load(平均アクティブセッション数)をもとにインサイトを出すDevOps Guru for RDSは何も出さないと思われる。
実行時間を5分、同時実行数を20にしてみる。
sysbench --db-driver=mysql \ --mysql-host=$ENDPOINT \ --mysql-user=admin \ --mysql-password=$PASSWORD \ --mysql-db=mydb \ --threads=20 \ --time=300 \ oltp_read_write \ run
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2) Running the test with following options: Number of threads: 20 Initializing random number generator from current time Initializing worker threads... Threads started! SQL statistics: queries performed: read: 1682296 write: 467487 other: 235659 total: 2385442 transactions: 115495 (384.92 per sec.) queries: 2385442 (7950.15 per sec.) ignored errors: 4669 (15.56 per sec.) reconnects: 0 (0.00 per sec.) General statistics: total time: 300.0482s total number of events: 115495 Latency (ms): min: 38.30 avg: 51.95 max: 204.73 95th percentile: 75.82 sum: 6000173.52 Threads fairness: events (avg/stddev): 5774.7500/15.97 execution time (avg/stddev): 300.0087/0.02
パフォーマンスインサイトで負荷がかかったことが確認できた。
さらにスレッドを100、300と増やしてみたところ、DevOps Guruのインサイトも出てきた。しかしこれはDB Loadではないので、DevOps Guru for RDSのインサイトではなく、普通のDevOps Guruのインサイトのように思える。