への書き込みこの質問は、既にAWSフォーラムに投稿さが、まだされている未解決のままhttps://forums.aws.amazon.com/thread.jspa?threadID=94589はとてつもなく遅いのアマゾンDynamoDBの(PHPのAPI)
私は(短期項目の長いリストの最初のアップロードを実行するためにしようとしています後でユニークキーでそれらを取得するために、DynamoDbの完璧なケースのようです。
しかし、私の現在の書き込み速度は、(それが現在のペースで約3ヶ月を取ると思います)、最初のアップロードがほとんど不可能になりた(100の書き込みあたりおよそ8-9秒)非常に遅いです。
私は答えを探しているAWSフォーラムを読んで、すでに次のことを試してみました:
私はシングル「put_item」から切り替えるには、25の項目(推奨最大一括書き込みサイズ)の一括書き込みに呼び出し、それぞれのアイテムは1Kbよりも小さい(これもお勧めです)。私のアイテムのうち25個が1Kb以下であっても非常に典型的ですが、保証されていません(そして、DynamoDBでは単一のアイテムサイズだけが重要であると理解しても問題ありません)。
最近紹介されたEU地域(私は英国)を使用して、set_region( 'dynamodb.eu-west-1.amazonaws.com')を呼び出すことでエントリポイントを直接指定しています。 PHP APIでそれを行う。 AWSコンソールは、適切な領域にテーブルがあることを示しています。
は、私は()(100のレコードごとに1秒を獲得)disable_sslを呼び出すことにより、無効SSLを持っています。
なお、100項目のテストセット(25個のアイテムに対する4回のバッチ書込み呼び出し)は、インデックス作成に8秒以下かかることはありません。バッチ書込み要求はすべて約2秒かかります。そのため、最初の書込み要求が瞬間的ではないため、結果として要求が遅くなります。
マイテーブルプロビジョニングスループットはこれまでに十分であるべきである100の書き込み及び100個の読み出し単位である(ちょうど場合にも何の効果もより高い限界を試していません)。
また、私はおそらく私の要求を「蓄積」するためにキューを使用できるように、いくつかの費用は、要求の直列化であることを知っているが、batch_writesのために本当に問題でそのくらい?また、1回のリクエストでも時間がかかりすぎるので、問題はないと思います。
リクエストを高速化するためにAPIのcURLヘッダー(特に「Expect:」)を変更する人がいることがわかりましたが、それは適切な方法ではないと思っていますし、APIもそれ以降更新されていますアドバイスが投稿されました。
私のアプリケーションが実行されているサーバーは、同様に罰金です - 私は、CPUの負荷が屋根を通過するが、私の場合にはすべてがうまくあり、時には、それは時間がかかりすぎるだけでネットワーク要求だと読みました。
私は今止まっています - 他に何か試すことができますか?私が十分な情報を提供していない場合は、より多くの情報を求めてください。
が明らかに同じ問題に、他の最近のスレッドがあり、here(今のところしかし無応答)。
このサービスは超高速になっているはずなので、私はその問題の当初から本当に困惑しています。
SQL Serverのようなリレーショナルデータベースが必要なようです。ちょうど 'SqlBulkCopy'のデータです。あなたが求めているのであれば、SQL ServerはWebスケールです。 –
私はここでリレーショナルDBは必要ありません(実際の関係のないフラットなインデックスです)。しかし、私は他のオプションがない場合、私はmySQLまたはSolrに後退することを考えています。しかし今のところ私はまだそのアプローチに何が間違っているかを理解したいと思っています。 – Yuriy
フォーラムの投稿が返信されました:https://forums.aws.amazon.com/thread.jspa?messageID=365597#365597 –