[AWS] リザーブドインスタンスの予約内容が変更可能になってた

おそらくAWS Trusted Advisorのリコメンデーションや同等の機能をもったサードパーティのツールによりガイドされていると思いますが、Amazon EC2のリザーブドインスタンスをうまく利用することにより、キャパシティを確保しつつ、コンピュートのコストを下げることができます。

本日、ニーズが変化した際にリザーブドインスタンスを変更できるようにすることで、リザーブドインスタンス(RI)モデルをより一層柔軟にいたしました。具体的には、同じリージョン内にあるアベイラビリティーゾーン間でRIを移動できるようになりました。もしお持ちのAWSアカウントがEC2-Classiceが有効になっているものでしたら、EC2-ClassicとEC2-VPC間のRIも移動することができます。

【AWS発表】 EC2 リザーブドインスタンスの予約内容を変更可能に

結構、うれしい

[PHP][AWS] AWS SDK for PHP 2 で S3 にファイルをアップロード


<?php
require_once("aws.phar");
use Aws\Common\Aws;
use Aws\Common\Enum\Region;
use Aws\S3\Enum\CannedAcl;
use Aws\S3\Exception\S3Exception;
use Guzzle\Http\EntityBody;
$access_key = 'Your Access Key';
$secret_key = 'Your Secret Key';
$region = Region::AP_NORTHEAST_1; // Region::AP_NORTHEAST_1 = Tokyo Region
$bucket = 's3_bucket_name';
try {
// S3
$s3 = Aws::factory(array(
'key' => $access_key,
'secret' => $secret_key,
'region' => $region,
))->get('s3');
$info = new FInfo(FILEINFO_MIME_TYPE);
// Upload File
$filename = 'test.txt';
$filebody = EntityBody::factory(fopen($filename, 'r'));
$filetype = $info->file($filename);
$response = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => $filename,
'Body' => $filebody,
'ContentType' => $filetype,
'StorageClass' => 'STANDARD', // STANDARD or REDUCED_REDUNDANCY
//'ServerSideEncryption => 'AES256',
'ACL' => CannedAcl::PUBLIC_READ, // PUBLIC_READ, PRIVATE_ACCESS…
));
var_dump($response);
} catch (S3Exception $e) {
}

view raw

upload-s3.php

hosted with ❤ by GitHub

Region の設定値: PHP 2: Class Aws\Common\Enum\Region | AWS SDK for PHP 2
ACL の設定値: PHP 2: Class Aws\S3\Enum\CannedAcl | AWS SDK for PHP 2

パフォーマンスチューニングした WordPress のベンチ

色々、やった結果 Amazon EC2 Micro インスタンス上に構築している WordPress 上で、ネットワーク越しでも ab -n 1000 -c 100 の結果が、これくらいになるようにはなった。
リソース少ないマシンをチューニングするのは楽しいすなぁ。

$ ab -n 1000 -c 100 -H 'Accept-Encoding: gzip' http://dogmap.jp/

Server Software:        nginx
Server Hostname:        dogmap.jp
Server Port:            80

Document Path:          /
Document Length:        14265 bytes

Concurrency Level:      100
Time taken for tests:   3.40771 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      14473818 bytes
HTML transferred:       14295933 bytes
Requests per second:    328.86 [#/sec] (mean)
Time per request:       304.077 [ms] (mean)
Time per request:       3.041 [ms] (mean, across all concurrent requests)
Transfer rate:          4648.16 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        8   11   5.5     10      43
Processing:    27  275  68.2    267     563
Waiting:       19  263  67.9    254     545
Total:         38  287  69.2    278     594

Percentage of the requests served within a certain time (ms)
  50%    278
  66%    290
  75%    317
  80%    338
  90%    371
  95%    394
  98%    427
  99%    520
 100%    594 (longest request)

秒間 328 リクエスト

ちなみに PHP Ninja 上の WordPress だと、このくらい。

$ ab -n 1000 -c 100 -H 'Accept-Encoding: gzip' http://ninja.dogmap.jp/
Server Software:        nginx
Server Hostname:        ninja.dogmap.jp
Server Port:            80

Document Path:          /
Document Length:        8783 bytes

Concurrency Level:      100
Time taken for tests:   1.548749 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      9063550 bytes
HTML transferred:       8812060 bytes
Requests per second:    645.68 [#/sec] (mean)
Time per request:       154.875 [ms] (mean)
Time per request:       1.549 [ms] (mean, across all concurrent requests)
Transfer rate:          5714.94 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       12   23  11.5     20      63
Processing:    32  123  45.0    125     206
Waiting:       14   87  45.4     80     172
Total:         46  146  40.3    149     218

Percentage of the requests served within a certain time (ms)
  50%    149
  66%    173
  75%    185
  80%    191
  90%    194
  95%    198
  98%    207
  99%    214
 100%    218 (longest request)

秒間 645 リクエスト、にばーいにばーい。