マウントしたEFSにWordPressを置いて速度検証

EBS VS EFS 〜東京襲来〜

2018年、初夏EFSが東京に来ました。

VSといったものの、いやいやEFSってそういうんやないから!って感じですけどね。

単純にルートデバイスのEBS(マグネティック)に置いたWordPressから、EFSに置いたWordPressに変更してアクセスしてみると、どれくらい速度下がるんだろうかっていう。

とりあえず、コチラから配布しているAMIをnginxをチョイスして、t2microでインスタンスを起動。

配布されているAMIには最初からWordPressが入ってるので、そのまま初期設定を終わらせて速度テストしていきます。

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

2018/07/18追記

配布AMIでは内部のphp部分はopcacheでキャッシュしており、実質読み込まれていないため早かった模様。

ので、下の記事は測定として間違っています。WordPressの記事投稿だけする&別にサイトイジらないなら問題ない・・・かもしれない。
けどそれならFastCGIキャッシュとか使って高速化すれば・・・

【東京リージョン対応】Amazon EFS の速度計測してみた結果【祝】

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

回線の不調とかでバラけるのが嫌なので、同VPC内にいる別インスタンスから、abで速度を取ります。

通常のEBSに置いたWordPress

まずはただの速度テストをしてみる。アクセス総数500、同時接続最大50で行ってみます。

[root@ ~]# ab -n 500 -c 50 http://作ったインスタンスのIP/
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 作ったインスタンスのIP (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Finished 500 requests


Server Software:        nginx
Server Hostname:        作ったインスタンスのIP
Server Port:            80

Document Path:          /
Document Length:        53349 bytes

Concurrency Level:      50
Time taken for tests:   7.008 seconds
Complete requests:      500
Failed requests:        0
Total transferred:      26783500 bytes
HTML transferred:       26674500 bytes
Requests per second:    71.35 [#/sec] (mean)
Time per request:       700.798 [ms] (mean)
Time per request:       14.016 [ms] (mean, across all concurrent requests)
Transfer rate:          3732.28 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    3   1.7      2       8
Processing:    21  686 158.3    653    1206
Waiting:       17  651 162.5    607    1114
Total:         21  688 157.7    655    1208

Percentage of the requests served within a certain time (ms)
  50%    655
  66%    700
  75%    742
  80%    801
  90%    940
  95%   1001
  98%   1094
  99%   1146
 100%   1208 (longest request)

Requests per second: 71.35 [#/sec] (mean)

ですので、秒間71リクエストさばけます。まぁまぁな速度。t2microであればこれくらいでしょう。さて次が本番

efs

さてさて。お次が本番EFS。単純にガシャコン接続させるだけなので、

https://dev.classmethod.jp/cloud/aws/elastic-file-system-ga-in-tokyo/

こちらの指示どおりに。作ってて注意したいのは、作ったばっかりのを繋ごうとすると、DNSが浸透しておらずエラーになるという点。

[root@ /]# sudo mount -t efs fs-hogehoge:/ efs
Failed to resolve "fs-hogehoge.efs.ap-northeast-1.amazonaws.com" - check that your file system ID is correct.
See https://docs.aws.amazon.com/console/efs/mount-dns-name for more detail.

即接続するとこんな感じになります。 さて、直下に置いた後、

[root@ /]# df -h
ファイルシス                                   サイズ  使用  残り 使用% マウント位置
devtmpfs                                         476M     0  476M    0% /dev
tmpfs                                            493M     0  493M    0% /dev/shm
tmpfs                                            493M   13M  481M    3% /run
tmpfs                                            493M     0  493M    0% /sys/fs/cgroup
/dev/xvda1                                        10G  2.8G  7.3G   28% /
tmpfs                                             99M     0   99M    0% /run/user/0
tmpfs                                             99M     0   99M    0% /run/user/1000
fs-hogehoge.efs.ap-northeast-1.amazonaws.com:/   8.0E     0  8.0E    0% /efs

8.0E!こんなサイズフルで使った日には請求書をなかったことにするしか・・・。 正しく/efsに置けたので、WordPressファイル群をコピー&nginxの設定を

server {
    listen       80 default_server;
    server_name  localhost;
    root         /efs;
~~~

のように変更。nginxをリスタートさせて、さぁ速度テスト。

[root@ ~]# ab -n 500 -c 50 http://作ったインスタンスのIP/
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 作ったインスタンスのIP (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Finished 500 requests


Server Software:        nginx
Server Hostname:        作ったインスタンスのIP
Server Port:            80

Document Path:          /
Document Length:        53349 bytes

Concurrency Level:      50
Time taken for tests:   7.611 seconds
Complete requests:      500
Failed requests:        0
Total transferred:      26783500 bytes
HTML transferred:       26674500 bytes
Requests per second:    65.69 [#/sec] (mean)
Time per request:       761.109 [ms] (mean)
Time per request:       15.222 [ms] (mean, across all concurrent requests)
Transfer rate:          3436.53 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   1.5      2       9
Processing:   425  709 130.1    682    1393
Waiting:      417  673 133.6    648    1320
Total:        425  711 130.0    685    1394

Percentage of the requests served within a certain time (ms)
  50%    685
  66%    714
  75%    739
  80%    754
  90%    845
  95%   1008
  98%   1162
  99%   1198
 100%   1394 (longest request)

Requests per second: 71.35 [#/sec] (mean)

Requests per second: 65.69 [#/sec] (mean)

お、思ったよりも下がっていない・・・。この速度を代償に冗長化可能であればありがたい。

EFSの本気

さて、ここまではデフォルト通りの設定ですが、EFSにはAmazon EFS プロビジョンドスループットモードに変更することが出来ます。

https://aws.amazon.com/jp/efs/pricing/

https://docs.aws.amazon.com/ja_jp/efs/latest/ug/limits.html

お金をガソリンに、常にエンジン全開で動かすことが出来るみたいなので、速度が少しは上がるはず・・・!

このあたりを行う・・・と思いましたが、いくら掛かるのかまだ試算出来てないので、一旦ここまで。

調べたら測定して載せます。