2017-06-20 70 views
3

我有一個使用DynamoDB的應用程序,我發現他們只是實現了自動縮放,這非常棒。我喜歡這個概念,我的應用程序的時機非常完美。但是,我仍然遇到一些問題,我不知道我是否無法調整設置以刪除。DynamoDB AutoScaling仍然節流

我的應用程序在使用中會出現明確的尖峯,所以我認爲這是一個理想的使用方式,但是對於自動縮放,我仍然會受到一些限制。這裏是我的最後12小時讀圖表: autoscaling

正如你所看到的,當它釘鞋使用量設置低,所以節流一兩個,直到更新踢,然後工作分鐘。沒關係,我認爲並不比縮放更好,但我希望它不會縮小......

有沒有什麼辦法可以告訴DynamoDB永遠不會調速,除非它超過100(或200或任何我設定的上限)?只要它出現波動,吞吐量就會增加15分鐘,或者等到波動結束後再進行處理。

+0

當然 - 將您的最低容量設置得更高。 :)說到這一點,你用什麼值和你的目標門檻?說真的,當然,你不能使用實際上不存在的容量。此外,看起來您正在進行大量掃描,這在容量消耗方面成本相對較高。 –

+0

公頃,真的我想,但重點是避免額外的成本:)。我被設置爲最低5,最高200,以及70%的利用率目標。我碰到50%的利用率,看看有什麼......我會看看我的代碼,看看我可能也在做什麼過多的掃描,謝謝你的提示... – sfaust

回答

1

Autoscaling使用CloudWatch。您可以通過轉到CloudWatch控制板來查看這些警報,並查找包含您的表名稱以及說明中的「不編輯或刪除」警報。

爲什麼我要告訴你這個?

那麼,CloudWatch具有一些最小的週期粒度。目前是1分鐘。這意味着在向聽衆發射任何事件之前,它至少會等待1分鐘。因此,負載開始後至少需要一分鐘,直到容量增加。實際上它會更多,因爲增加容量也需要時間。底線:如果您有很大的峯值,一些請求可能會受到限制,因爲自動縮放不會生效,並且bursting可能會用盡。

簡單但昂貴的解決方案將增加初始容量。

如果您事先了解即將到來的高峯(例如,您有一些工作定期運行,或者某些時候客戶達到峯值),則可以使用API以編程方式修改自動調節。

+0

哼。 API可能是理想的,因爲我有一個以前的腳本來改變特定定時器的吞吐量,所以我可以在相同的時間範圍內改變自動縮放。然而,這裏的例子都是java,你知道現在只是java還是可以用PHP來做到這一點?我沒有看到PHP API中的任何自動縮放類... – sfaust

+0

我很確定沒有直接的PHP支持。您可以使用AWS CLI。我沒有真正進入PHP,但是你可以從PHP調用CLI嗎?我已經使用這種方法來處理我的腳本。 – Tarlog

+0

嗯,不確定。我也有一個網絡主機,所以我不知道我是否可以在我的主機上安裝CLI ...感謝這個想法,但是,檢查它... – sfaust