どうも、キタです。
今回は国産VPS vs 海外クラウドということで
ConoHa VPS と AWS EC2 を徹底的にベンチマークして性能を比較してみました。
ConoHa VPS は、GMOインターネットが提供するVPS(仮想専用サーバー)型のクラウドサービスです。
高性能かつ低価格で、何よりも「シンプルでわかりやすい料金体系」と「すぐに使えるスピード感」が大きな魅力とされています。
特に、SSDストレージを標準搭載しており、Webサイト運用や開発環境、ゲームサーバーなど幅広い用途に対応できる柔軟さが特長です。とはいえ、やはり気になるのはサーバーの実際の性能ではないでしょうか? そこで今回は、ConoHa VPS と AWS EC2 を徹底的にベンチマークして、その性能を比較してみました。
比較するサーバーのスペックと月額料金
まずは比較対象のスペックと料金からです。

料金だけを見れば ConoHaが圧倒的に安いですね。
EC2はインターネットへのデータ送信量(OUT)は有料になります。
今回は転送量の変数は除外しているので、本番環境を想定した場合これに追加で更に料金がかかります。
ベンチマークの概要
今回は以下内容で測定をしてみました。

cronを利用して以下の設定の通りで24時間の丸一日のデータを取得しました。
00 * * * * /usr/local/bin/unixbench.sh
40 * * * * /usr/local/bin/io_read.sh
45 * * * * /usr/local/bin/io_write.sh
50 * * * * /usr/local/bin/sysbench.sh
ベンチマーク結果(サマリ)

記事の内容が長いので、先に各ベンチーク結果の平均値をまとめました。
今回計測したサーバーのスペックだけを見ると、AWS EC2 に軍配が上がりそうです。
各ベンチマークの設定方法
ConoHa VPS と AWS EC2 どちらもまったく同じ手順で、ベンチマークを設定し計測しました。サーバーOSは Alma Linux 9.6 です。
今回のベンチマーク結果ログ
はじめに、インストール済みのパッケージを最新版にアップデートし、開発ツールなど基本的なパッケージをインストールします。
$ dnf -y update
$ dnf -y groupinstall base
$ dnf -y groupinstall development
$ dnf -y groupinstall network-tools
続けて各ベンチマーク結果ログの保存先を作成しておきます。
$ mkdir /var/log/bench
CPU性能(UnixBench)
今回はベンチマークソフトとしてUnixBenchを使用します。
UnixBenchとは↓
まずは必要パッケージのインストールとgit cloneで落としてきて
make コマンドでビルドします。
$ dnf -y install perl perl-Time-HiRes perl-FindBin make gcc git
$ git clone https://github.com/kdlucas/byte-unixbench
$ cd byte-unixbench/UnixBench
$ make
実行後にベンチマーク実行スクリプトの作成をしていきます。
$ vi /usr/local/bin/unixbench.sh
#!/bin/sh -
LOG='/var/log/bench/unixbench.log'
cd /root/byte-unixbench/UnixBench
echo '==================== START ' `date` '====================' >> $LOG
./Run >> $LOG 2>&1
echo '==================== END ' `date` '====================' >> $LOG
echo '' >> $LOG
exit 0
実行権限を設定します。
$ chmod 700 /usr/local/bin/unixbench.sh
crontab に登録します。
$ crontab -e
00 * * * * /usr/local/bin/unixbench.sh
これで毎時00分ごとに実行してログに情報を残してくれます。
Read ディスク性能
Read 性能に関しては hdparm を使用します↓
hdparm をインストールします。
$ dnf -y install hdparm
インストールが出来たらベンチマーク実行スクリプトの作成をしていきます。
$ vi /usr/local/bin/io_read.sh
#!/bin/sh -
LOG='/var/log/bench/io_read.log'
#
# ディスクのデバイス名を指定
#
DISK='/dev/sda1'
echo '==================== START ' `date` '====================' >> $LOG
for i in `seq 10`
do
echo 1 > /proc/sys/vm/drop_caches
/sbin/hdparm -t $DISK >> $LOG 2>&1
done
echo '==================== END ' `date` '====================' >> $LOG
echo '' >> $LOG
exit 0
※この際指定しているディスクのデバイス名は lsblk もしくは df -h で確認して置き換えてください。
続けて実行権限を設定します。
$ chmod 700 /usr/local/bin/io_read.sh
crontab に登録します。
$ crontab -e
40 * * * * /usr/local/bin/io_read.sh
毎時40分ごとにhdparmを10回実行してログに情報を残してくれます。
Write ディスク性能
Write 性能に関しては dd を使用します↓
同様にベンチマーク実行スクリプトの作成をしていきます。
$ vi /usr/local/bin/io_write.sh
#!/bin/sh -
LOG='/var/log/bench/io_write.log'
OF='/tmp/io_write'
/bin/mkdir $OF
echo '==================== START ' `date` '====================' >> $LOG
for i in `seq 10`
do
/bin/dd if=/dev/zero of=${OF}/${i} bs=1M count=512 >> $LOG 2>&1
done
echo '==================== END ' `date` '====================' >> $LOG
echo '' >> $LOG
/bin/rm -r $OF
exit 0
続けて実行権限を設定します。
$ chmod 700 /usr/local/bin/io_write.sh
crontab に登録します。
$ crontab -e
45 * * * * /usr/local/bin/io_write.sh
これで毎時45分ごとにddコマンドを使って、データのないファイル(/dev/zero)を1回あたり
512MB のサイズで10回連続で書き込んで、書き込み速度など実行結果をログに残してくれます。
MySQLのTPS(トランザクション毎秒)
最後にMySQLトランザクションの設定です。
こちらは SysBench↓ というツールを利用して計測をしていきます。
SysBench のインストールをしていきます
$ dnf -y install epel-release
$ dnf -y install sysbench
MySQL のインストールと起動をします。
$ dnf install https://dev.mysql.com/get/mysql80-community-release-el9-5.noarch.rpm
$ dnf -y install mysql-community-server
$ systemctl enable --now mysqld.service
MySQL の初期設定をします。
#root のパスワード確認
$ grep password /var/log/mysqld.log
$ mysql_secure_installation
SysBench用のDBとユーザーの作成
$ mysql -p
mysql> CREATE DATABASE sbtest;
mysql> GRANT ALL ON sbtest.* TO 'sbtest'@'localhost' IDENTIFIED BY '<パスワード>';
mysql> EXIT
計測用テーブルの作成をする
$ sysbench \
--test=/usr/share/sysbench/tests/include/oltp_legacy/oltp.lua \
--db-driver=mysql \
--oltp-table-size=1000000 \
--mysql-password=<パスワード> \
prepare
ベンチマーク実行スクリプトの作成をする
$ vi /usr/local/bin/sysbench.sh
#!/bin/sh -
LOG='/var/log/bench/sysbench.log'
echo '==================== START ' `date` '====================' >> $LOG
/bin/sysbench \
--test=/usr/share/sysbench/tests/include/oltp_legacy/oltp.lua \
--db-driver=mysql \
--oltp-table-size=1000000 \
--mysql-password=<パスワード> \
--num-threads=1 \
--max-requests=0 \
--max-time=300 \
--oltp-read-only=off \
run >> $LOG 2>&1
echo '==================== END ' `date` '====================' >> $LOG
echo '' >> $LOG
exit 0
最後に実行権限を設定します。
$ chmod 700 /usr/local/bin/sysbench.sh
crontab に登録します。
$ crontab -e
50 * * * * /usr/local/bin/sysbench.sh
これで毎時50分毎にデータベースに単一の負荷を5分間かけ続け、その処理速度を測って記録してくれます。
(結論) ConoHa VPS はコスパ最強!
最後にコスパの観点から各ベンチマーク項目に重み付けをしてスコアを出してみました。

総合スコアに対して月額料金を割ってから10,000を掛けてコスパスコアを算出したところ
ConoHa VPS は圧倒的なコストパフォーマンスを出してくれました。
ただし、ConoHa VPSはあくまで VPS であり、AWS RDS のようなマネージドサービスがないため、ユーザ側でのインフラの定期的なメンテナンスは必須となります。
パブリッククラウドにこだわる必要がなければ、クラウドサーバの半分以下の金額で同程度の性能を得られる ConoHa VPS がオススメです。
最後に
弊社ビヨンドではGMOインターネット株式会社様と協業し、法人向けのサーバー運用代行サービス『ConoHa VPS byGMOマネージドパック』を提供しております。
ConoHa VPSの導入・設計・構築・移行、24時間365日の運用保守・監視までの技術サポートを、フルサポートでお客様へご提供しておりますのでご興味があれば相談からでも問題ありませんので、お気軽にお問い合わせくださいませ!

