2017-08-15 64 views
2

我有一個.NET核心應用程序部署在Azure上,完全由RESTful服務組成,這些服務打到一個天藍色的sql數據庫 - 沒有前端。 IIRC,對於Azure上部署的任何應用都處於非活動狀態的應用,Azure會「關閉」應用和/或數據庫。一旦「關閉」,調用RESTful服務時,app/db需要「喚醒」一段時間。保持azure asp.net核心webapi-only應用程序

有沒有辦法來防止這種情況發生在天藍色?我試着打開「永遠在線」,但我認爲所有這一切只是在根源上,爲此我沒有做任何事情。對我來說問題在於,有時候RESTful服務會因Azure花費一些時間來「喚醒」app/db而超時。

+0

嗯,是的,總是在頁面上請求保持活着的頁面。但是你不能防止回收,它總會在某些時候發生(記憶壓力,配置變化等)。這就是IIS的工作原理 – Tseng

+0

@Tseng是否有一種方法可以讓它在回收後自動備份,知道我沒有可以ping的頁面? –

+0

不知道,在IIS中,您可以爲特定AppPool設置空閒時間,但不確定App服務是否可用。當然,您可以爲頁面的根設置一個靜態文件中間件,以在請求時提供一個空的html文件。也可以嘗試docker服務,Kestrel使用nginx作爲自己的進程運行,除非容器崩潰,否則不會重新啓動 – Tseng

回答

0

它可能是由Azure SQL DB引起的。如果您使用的是基本層級別數據庫,則可能會出現問題。此層使用可預測的每小時交易率。標準具有可預測的每分鐘TR和每秒可預測的優質TR。這可以優先考慮每層的自動DTU縮放。

如果您在一段時間後執行單個請求,則預測不會受到很大影響。您將需要執行一系列數據庫事務來爲您的數據庫分配DTU。

因此,就您的情況而言,在您開始使用數據庫之前,在某些合理的時間間隔內敲入數據庫是個好主意。

您可以通過創建webjob來實現它,該webjob會擊中將對db執行查詢的某個應用程序端點。

相關問題