2015-08-30 37 views
0

我只在Amazon的AWS上設置了一個db.t2.micro實例。我正在使用sinatra來加載本地主機網頁。我使用Active Record來做約30個查詢,並且需要92秒才能加載。這非常緩慢。我嘗試做如下所列的自定義參數:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_BestPractices.html#CHAP_BestPractices.PostgreSQL如何加快我的AWS RDS Postgres性能?

這並沒有幫助加快速度。我不知道如何加快這個實例。這是我第一次託管數據庫。任何幫助,將不勝感激。

當我運行我的sinatra應用程序時,它在本地託管(本地主機)。這是30〜查詢需要92秒才能加載的地方。當我在Postgres中運行select *語句時,它們只需要幾秒鐘。

+0

請您澄清一下您的意思*「它只是通過本地主機緩慢運行,當我在Postgres中查詢時,它非常快。」*?你是說數據庫太慢,還是「非常快」?另外,請注意't2.micro'實例具有可突發性的CPU - 如果CPU使用太多,它會減慢速度。您是否查看了[CloudWatch指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/rds-metricscollected.html)以查看CPU/RAM /磁盤是否受到限制? –

+0

進行一些日誌記錄以查看減速是由數據庫還是應用程序引起會很有用。查看發送給PostgreSQL的SQL查詢日誌以查看哪些日誌可能運行緩慢也很有用:https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.PostgreSQL html的 –

回答

3

問題是你和亞馬遜的數據中心之間的延遲。

例如,當您在紐約時,您的RDS實例位於亞馬遜的西海岸數據中心時,則您與數據中心之間的延遲時間大約爲80-100毫秒。這意味着當您的本地應用程序向數據庫發送查詢時,在數據庫接收查詢之前大約需要100ms。要返回答案,需要再花100毫秒。這就是說:假設往返需要300ms,並且你有30個查詢,那麼你的應用程序就會失去10秒左右的空間 - 只是等待數據通過線路發送。還有其他一些因素可能會使這一點變得更慢:大數據包或丟失的數據包(服務器必須再次詢問),糟糕的互聯網連接,無線連接,您和數據庫之間的距離比我的示例要長。

因此,數據庫應儘可能靠近同一數據中心的應用程序服務器,以儘量減少延遲。