Help us understand the problem. What is going on with this article?

PHPからのDynamoDBアクセスを高速化する

More than 5 years have passed since last update.

このドキュメント(Performance Guide)を見ていて、何かDynamoDBのアクセスをチューニングできないかと思って試してみたメモです。

試してみたのは、 下記の3種類とその組み合わせです。

  1. pecl の uri_templateを入れてみる
  2. validation を falseにしてみる
  3. http接続にする (httpsをやめる)

(httpにすると早くなるらしいというのは、どこかで見かけたのだけど、覚えてない…)

テスト内容

  • $client->getItem() で 1件取得 を1000回繰り返して、1件ごとに消費した秒数の平均を計算
  • Read Capacityは予め多めにしておく。

結果

パターン 平均秒数
normal 0.282
uri_template 0.262
validation=false 0.268
scheme=http 0.087

uri_template と、validation = false は少し早くなりました。
が、断然早くなったのは、「http接続にする」で、約3.2倍の速度がでました。

次に、上記の組み合わせで試してみました。

パターン 平均秒数
scheme=http, uri_template 0.058
scheme=http, uri_template, validation=false 0.056

http接続+uri_template にすると、通常の4.8倍程度の速度になりました。
validation=falseも組み合わせてみましたが、あまり変わらず。
何度か試していると逆に遅くなるケースもあり、誤差の範囲のようです。

DynamoDB-Performance-Test.png

コード

http接続にする

$client = Aws\DynamoDb\DynamoDbClient::factory(array(
    'region' => 'ap-northeast-1',
    'scheme' => 'http',
));

validation を offにする

$client = Aws\DynamoDb\DynamoDbClient::factory(array(
    'region' => 'ap-northeast-1',
    'validation' => false
));

uri_template

$ sudo pecl install uri_template
$ sudo echo "extension=uri_template.so" > /etc/php.d/uri_template.ini

まとめ

  • http接続 + uri_template にすると、通常の4.8倍くらいになるよ。
  • 当然ながら暗号化されないので、ご利用は自己責任で。

追記(2015/03/07)

DynamoDBへのアクセスに 200ミリsecとかかかってて、遅すぎじゃね?と思って調べたら、
Aws\DynamoDb\DynamoDbClient::factory でインスタンス生成して、初回のgetItemのみ、200msくらいかかって、それ以降は数msになった。

0.228
0.007
0.013
0.013
0.01
0.007
0.015
0.013
0.012
0.018

https でも http でも同様に2回め以降は 数msから数10msの範囲だったので、ほぼ差はみられなかった。

「初回の遅さ」が何に起因しているのか調査が必要。

mercari
フリマアプリ「メルカリ」を、グローバルで開発しています。
https://tech.mercari.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away