読者です 読者をやめる 読者になる 読者になる

らくがきちょう

なんとなく

バックエンドを S3 にした ownCloud をベンチマークしてみる

Linux ownCloud

「ownCloud + オブジェクトストレージのベンチマーク」のベンチマークを取得してみました。

結論

今回、計測した条件下では「Sakura VPS のローカル」パターンが最も良い結果となりました。「このパターンが一番、速いだろう」という予想はあったのですが、思った以上に速度差の出る結果となりました。

前提条件

テストは以下の環境を利用しました。AWS と Sakura VPS でテストを実施しましたが、OS と ownCloud のバージョンは揃えてあります。ownCloud のバックエンドに利用している MySQL 等、ミドルウェアのバージョン等も出来るだけ、揃えたつもりです。

  • テスト PC
    • 自宅(日本国内)から接続
  • AWS
    • Ubuntu 16.04.1
    • ownCloud 9.1.4
    • ownCloud のバックエンドは MySQL を利用
    • ローカルストレージは EBS 20GB、gp2 を利用。IOPS は 100/3000
    • Instance Type は t2.micro 〜 t2.medium を利用 (後述)
    • Instance は us-east-2 (Region Oregon) に配置
  • Saraku VPS
    • Ubuntu 16.04.1
    • ownCloud 9.1.4
    • ownCloud のバックエンドは MySQL を利用
    • 2G プラン (vCPU x 2 、メモリ 2G) を利用

クライアント PC は出来るだけ他タスクを実行しないようにテストしましたが、以下は考慮していません。

  • キャッシュ
  • EBS の BurstBalance
  • ネットワークの状態
  • テストの時間帯
    • テストにかなり時間がかかっている為、最初と最後のテストではかなり実施時間に差があります

テストの実施方法

テストは以下のように実施しました。

  • dd で指定サイズの空ファイルを 10 個作成
  • テスト用スクリプトで 10 ファイルをアップロード

テスト用スクリプト

テスト用スクリプトは以下の通りです。curl を使い、CLI から ownCloud にアップロードします。ループを書かずに 10 行、手書きしてしまいました(笑)。結果は time コマンドの real 値を取得しています。ownCloud は External Storage Support を有効にして S3 をマウントし、スクリプト内のアップロード先 URL も併せて調整します。

#!/bin/sh

USERNAME='USERNAME'
PASSWORD='PASSWORD'
URL='https://FQDN/owncloud/remote.php/webdav'
SIZE='1M'

time -p curl -X PUT -u "${USERNAME}:${PASSWORD}" "${URL}/${SIZE}-0" --data-binary @${SIZE}-0
time -p curl -X PUT -u "${USERNAME}:${PASSWORD}" "${URL}/${SIZE}-1" --data-binary @${SIZE}-1
time -p curl -X PUT -u "${USERNAME}:${PASSWORD}" "${URL}/${SIZE}-2" --data-binary @${SIZE}-2
time -p curl -X PUT -u "${USERNAME}:${PASSWORD}" "${URL}/${SIZE}-3" --data-binary @${SIZE}-3
time -p curl -X PUT -u "${USERNAME}:${PASSWORD}" "${URL}/${SIZE}-4" --data-binary @${SIZE}-4
time -p curl -X PUT -u "${USERNAME}:${PASSWORD}" "${URL}/${SIZE}-5" --data-binary @${SIZE}-5
time -p curl -X PUT -u "${USERNAME}:${PASSWORD}" "${URL}/${SIZE}-6" --data-binary @${SIZE}-6
time -p curl -X PUT -u "${USERNAME}:${PASSWORD}" "${URL}/${SIZE}-7" --data-binary @${SIZE}-7
time -p curl -X PUT -u "${USERNAME}:${PASSWORD}" "${URL}/${SIZE}-8" --data-binary @${SIZE}-8
time -p curl -X PUT -u "${USERNAME}:${PASSWORD}" "${URL}/${SIZE}-9" --data-binary @${SIZE}-9

試験の結果の単位

以降全て、試験結果の数値は「秒」を表します。

AWS

以下の組み合わせでインスタンスタイプを大きくしながら「ローカルの EBS」と「S3」のパターンを試験しました。

No. Instance Type Storage
1 t2.micro Local (EBS)
2 t2.micro S3 Oregon
3 t2.small Local (EBS)
4 t2.small S3 Oregon
5 t2.medium Local (EBS)
6 t2.medium S3 Oregon

1MB のファイルアップロード時間

結果は以下の通りです。結果を平均すると、どの条件でもあまり差はありませんでした。

No. (1) t2.micro/Local (2) t2.micro/S3 Oregon (3) t2.small/Local (4) t2.small/S3 Oregon (5) t2.medium/Local (6) t2.medium/S3 Oregon
1 2.709 4.51 4.259 4.266 4.092 4.353
2 2.732 10.747 4.622 13.026 6.985 4.906
3 9.188 5.527 7.544 5.347 3.591 3.954
4 4.058 4.561 4.268 7.402 3.772 5.635
5 2.733 4.367 3.232 4.668 7.814 4.527
6 6.747 7.105 5.63 4.401 3.95 5.251
7 2.766 4.8 6.951 4.416 2.688 7.284
8 3.578 4.435 8.981 6.023 3.006 5.215
9 5.162 4.645 3.319 4.537 8.537 4.319
10 2.815 4.75 3.103 4.843 2.886 4.48
Avg. 4.2488 5.5447 5.1909 5.8929 4.7321 4.9924

10MB のファイルアップロード時間

インフラ側は同じ条件で、次は「10MB のファイルアップロード時間」を計測してみました。

No. (1) t2.micro/Local (2) t2.micro/S3 Oregon (3) t2.small/Local (4) t2.small/S3 Oregon (5) t2.medium/Local (6) t2.medium/S3 Oregon
1 12.042 14.397 25.665 35.098 8.316 19.549
2 8.543 15.179 19.341 17.72 16.301 30.7
3 14.914 17.387 18.63 29.573 9.598 15.885
4 11.997 11.455 18.526 21.074 13.797 17.755
5 15.34 21.92 15.691 29.966 10.098 23.267
6 13.726 10.918 18.731 16.179 15.493 8.428
7 19.442 12.652 17.294 14.952 8.621 23.979
8 13.702 13.775 16.293 26.177 40.439 10.425
9 26.476 17.261 25.917 21.971 8.606 28.499
10 17.963 9.129 9.065 23.268 19.256 53.812
Avg. 15.4145 14.4073 18.5153 23.5978 15.0525 23.2299

AWS vs Sakura VPS

以下の組み合わせで AWS と Sakura VPS でストレージを切り替えながら試験しました。

No. Instance Type Spec (vCPU / Mem) Storage
1 AWS t2.medium 2vCPU / 4GB Local (EBS)
2 AWS t2.medium 2vCPU / 4GB S3 Oregon
3 Sakura VPS 3vCPU / 2GB Local
4 Sakura VPS 3vCPU / 2GB S3 Tokyo
5 Sakura VPS 3vCPU / 2GB S3 Oregon

1MB のファイルアップロード時間

1MB で試験した結果は以下の通りです。Sakura VPS のローカルファイルシステム利用時が圧倒的に速い結果となりました。

No. (1) t2.medium/Local (2) t2.medium/Oregon (3) Sakura/Local (4) Sakura/Tokyo (5) Sakura/Oregon
1 4.092 4.353 5.76 14.59 22.28
2 6.985 4.906 1.03 17.61 26.43
3 3.591 3.954 0.86 19.41 30.94
4 3.772 5.635 1.35 21.7 34.41
5 7.814 4.527 0.83 24.57 39.79
6 3.95 5.251 1.91 27.46 44.61
7 2.688 7.284 0.76 29.49 45.5
8 3.006 5.215 0.82 32.71 55.39
9 8.537 4.319 0.74 35.87 55.83
10 2.886 4.48 0.75 38.1 59.33
Avg. 4.7321 4.9924 1.481 26.151 41.451

10MB のファイルアップロード時間

10MB で試験した結果は以下の通りです。

No. (1) t2.medium/Local (2) t2.medium/Oregon (3) Sakura/Local (4) Sakura/Tokyo (5) Sakura/Oregon
1 8.316 19.549 5.29 40.39 70.49
2 16.301 30.7 3.98 45.55 70.79
3 9.598 15.885 6.89 48.8 73.96
4 13.797 17.755 12.23 49.92 77.11
5 10.098 23.267 3.51 53.24 84.37
6 15.493 8.428 2.87 60.62 99.15
7 8.621 23.979 3.5 59.1 96.03
8 40.439 10.425 3.88 65.42 96.73
9 8.606 28.499 28.11 65.48 102.84
10 19.256 53.812 4.59 66.4 106.02
Avg. 15.0525 23.2299 7.485 55.492 87.749

100MB のファイルアップロード時間

100MB で試験した結果は以下の通りです。 この試験だけ、AWS は t2.micro を使いました。 Sakura VPS + S3 パターンは遅すぎて試験出来ませんでした…

No. (1) t2.micro/Local (2) t2.micro/Oregon (3) Sakura/Local (4) Sakura/Tokyo (5) Sakura/Oregon
1 72.96 130.362 16.44 - -
2 175.259 168.255 38.08 - -
3 148.625 112.404 52.69 - -
4 285.194 93.081 39.28 - -
5 89.227 96.584 17.79 - -
6 135.217 183.101 55.86 - -
7 90.909 188.184 17.57 - -
8 58.378 221.642 35.95 - -
9 73.735 98.022 44.6 - -
10 166.72 138.151 15.77 - -
Avg. 129.6224 142.9786 33.403 - -