ラーニングシステム(moodle)をEC2で運用しておりますが、この度、集合研修として1箇所で集まってシステムにアクセスするとのことですので、事前にEC2スケールアップしておきます。
ELBを利用したスケールアウトとどっちがいいか悩みましたが、moodleではデータディレクトリの為に共有ストレージの設定が必要になってくる為、今回は時間もないのでスケールアップを選択しました。
手順は以下です。
1. AWS管理コンソールにて「EC2」サービスから「インスタンス」メニューを選択します。
2. スケールアップ対象のEC2インスタンスを選択し、起動中のインスタンスを停止します。
3. 対象のインスタンスが停止したのを確認して、「インスタンスタイプの変更」を選択します。
4. 表示されたダイアログでスケールアップしたいインスタンスタイプを選択し「変更」をクリックします。
5. 停止中のインスタンスを再度、起動します。
これでスケールアップ作業は完了です。結構簡単にスケールアップができました。
6. スケールアップしたEC2のパフォーマンスを apache の ab を使って確認してみます。
500ユーザーが、同時に 10リクエスト発行したとして負荷テストを行います。
-n のパラメータは 500 x 10 = 5,000 、-c のパラメータは 500 です。
$ ab -n 5000 -c 500 https://www.example.com/login/index.php
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.example.com (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests
Server Software: Apache/2.4.23
Server Hostname: www.example.com
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256
Document Path: /login/index.php
Document Length: 27719 bytes
Concurrency Level: 500
Time taken for tests: 51.841 seconds
Complete requests: 5000 ← 総リクエスト数
Failed requests: 0 ←失敗回数
Write errors: 0
Total transferred: 141280000 bytes
HTML transferred: 138595000 bytes
Requests per second: 96.45 [#/sec] (mean) ← 秒間リクエスト数
Time per request: 5184.149 [ms] (mean)
Time per request: 10.368 [ms] (mean, across all concurrent requests)
Transfer rate: 2661.36 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 140 3168 4831.3 1875 45588
Processing: 133 1575 572.1 1779 3122
Waiting: 87 1101 402.4 1227 2308
Total: 396 4744 4913.2 3742 47618
Percentage of the requests served within a certain time (ms)
50% 3742
66% 4026
75% 4346
80% 4616
90% 6270
95% 10482
98% 19761
99% 35358
100% 47618 (longest request)
上記の結果は次のようになります。
リクエスト総数:5,000 失敗回数:0 回、秒間リクエスト数:96.45