一千萬個為什麽

搜索

為什麽AWS EC2的現貨價格高於按需定價?



我昨天試圖通過Ansible提供現貨實例,幾乎所有的請求都失敗了,即使我將現貨價格==該實例的按需價格。

所以,當我看看現貨定價圖時,我發現了一件非常有趣的事情:

enter image description here

美國東部1a的實例現貨價格高於按需價格,這讓我感到困惑。 [事實上,高出約5倍]

Aren't spot instances preferred for the low cost? If yes, then why is the price higher than the on-demand price?

根據 AWS的文檔

競價型實例可讓您訪問未使用的Amazon EC2容量   相對於按需價格而言,價格大幅上漲。

另外,這是否意味著人們對按需定價進行出價?如果是,那為什麽呢?按需實例是不是更好?

還是我理解斑點實例的概念是錯誤的?

轉載註明原文: 為什麽AWS EC2的現貨價格高於按需定價?

一共有 4 個回答:

這實際上是人們輕微濫用現場的一個很好的例子。人們在說'我們的工作量非常重要,但我們不希望全額支付需求價格',所以他們設定了高於按需的出價,假設它不太可能被終止,但仍然想要獲得“最便宜”的現貨價格。

例如,有些人會輸入1000美元(至少有一次這種情況我被告知),因為他們想要現貨市場的好處。當然,在某些時候,需求會出現,現貨價格會讓人們支付高於按需支付的價格。

現貨市場的工作方式是亞馬遜擁有X個實例的閑置容量,並且從上到下計數,直到滿足所有X實例的需求。那麽'價格'是他們可以實現這些X實例的最低價格。

所以,想象一下,亞馬遜有10,000個實例 - 他們會倒數到(比如說)0.43美元,直到他們實現了10,000個實例。但是如果供應量突然下降到100個,那麽也許有幾個人在100個實例中投標價格為10,000美元,突然間他們會支付每小時1萬美元。

Tl; dr了解現貨是如何運作的,並設定你準備支付的上限。

這有兩個原因:

    很多用戶在某些時候使用了現場實例(想想批處理,啟動100臺機器作為現場實例並收縮)。
  • 對於某個現貨實例,您不支付出價,則支付當前現貨價格。投標價格是截止點。如果當前現貨價格超出投標價格,AWS將終止該實例。

這最後一個也是一些用戶會在現貨價格上大幅高價的原因。他們不希望他們的實例經常關閉,所以他們出價高到現貨價格永遠不會達到。由於他們只支付當前的現貨價格,所以實例將在99%的時間內便宜得多。

為理解為什麽有人會按需按價格出價,有用的信息可以在競價實例簡介

競價型實例可以用來幫助您滿足偶爾的需求   對於大量的計算容量(請註意,競價型實例的默認限制為100比較   按需實例的默認限制為20)。如果您的需求緊急,則可以指定較高的最大值   價格(可能甚至高於按需價格),這將提高您的請求的相對優先級   並允許您獲得盡可能多的立即容量給予其他請求和   競價型實例容量在當時可用。

如果您的服務需求巨大(可能與其他受歡迎的網站鏈接 - 請參閱 Slashdot效果),如文檔所述,競價高於按需定價實例可以幫助您訪問更多的實例。

當然,從長遠來看,這是不可持續的,通過購買按需實例(加上低於競價的風險更低),您可以獲得更好的長期計算交易。

如果您處於需要大量計算能力,快速 的情況下 - 比僅從購買按需實例中獲得的更多,則可能會出現超負荷情況。

如果仔細查看圖表,您會發現峰值持續時間非常短 - 只需足夠的時間讓業主編寫的自動監測系統能夠優雅地終止這些系統。另外,您偶爾會發現價格在下跌後立即下跌至0。這是因為該數據中心的所有系統都是按需使用的系統,沒有可用於現貨定價的系統,價格實際為零。

當您的Spot實例標記為終止時,系統會在 http://169.254.169.254/latest/meta-data/spot/termination-time 。在結束之前會有 3分鐘。在大多數情況下,有足夠的時間來自動處理終止。只有需要超過幾分鐘時間才能正常終止的部署時,才需要出價高於需求價格。

如果無法設計您的系統以優雅地終止,在3分鐘內歸檔數據等,您可以將出價放在高於需求價格的位置以獲得時間。該系統甚至可以設計為主動監控當前現貨價格並在價格上漲之前進行調換。但是對於那些時候,你需要做出一個商業決定,確定它有多少時間才能正常結束。

為了保持系統安全,在4-5小時內支付100美元/小時是愚蠢的。但是,如果系統需要30分鐘才能優雅地終止所有進程,則可以做出業務決策,可能會丟失多少數據或降低橫向擴展服務的價值。一個每小時凈利潤為10,000美元的電子商務網站肯定能夠支付1000美元,使2個現貨實例運行15到30分鐘,同時啟動需求系統和歸檔數據。

基於Web的應用程序可以使用Elastic Load Balancer來幫助自動解決終止問題。一個聰明的實現者會設置一組腳本來處理警報。他們可以保持2個低成本按需負載均衡的實例 - 然後通過現場實例使用多達6個中等成本系統來保持高性能,並且花費少於具有相同容量的單個按需系統。

其中3人支付高達100美元/小時,其中3人支付高達一半的按需價格。當AWS終止實例時,ELB將自動進行調整。給自動化系統長達一個小時只需花費200美元。