2013-07-15 49 views
3

2天前,我將Heroku Postgres服務器從Kappa升級到Ronin。我們的數據庫高達幾GB,我認爲額外的內存將有助於緩存。我使用標準的快速交換技術(創建追隨者,允許轉移,提升追隨者)。我知道緩存可能需要一段時間才能預熱,但已經過了好幾天,並且一直在慢慢下降。Heroku Postgres DB升級後變慢

我們較小的數據庫運行大約5毫秒的響應時間。轉移後新的數據庫跳到了大約10ms(冷藏)。此後在10ms和20ms之間波動。

  • 新的數據庫運行完全相同的版本(9.2.4)。
  • 我注意到有更多的日誌發生(檢查點)。
  • 來自舊數據庫的db緩存命中/未命中是〜0.91,因此是更新。新的數據庫已經達到了相似的命中率,所以我期望緩存的溫暖不再是問題。

是否有一些配置可能不同?我知道每個應用程序都是不同的,但緩存現在不應該升溫嗎? Kappa & Ronin之間是否有任何未公開的區別?

感謝

+0

是否有可能擴展或類似的配置不會傳輸? – Forrest

+0

@CraigRinger謝謝你的提示。如果heroku沒有迴應明天有用的東西,我會試試這個。你爲什麼不把它作爲答案提交,所以如果成功我可以接受。 – Forrest

回答

3

我與客戶誰給我打電話了一些緊急求助見過這個。

在與heroku bash進行了一番討論後,我們最終得出結論:新實例位於特別繁忙的底層服務器上。我們通過追隨者升級到另一臺機器進行故障轉移,此時性能大大提高 - 儘管故障轉移由於主機問題而具有挑戰性。

據我所知,Heroku的實例是運行LXC容器的Amazon EC2節點(Xen虛擬機)來隔離每個Heroku用戶的數據庫集羣。 LXC提供的隔離度比完整的虛擬機少;實例可以根據使用OpenCZ配置的確切策略,任何控制組策略等競爭RAM,磁盤I/O,CPU等。

如果您在其他用戶沒有做的實例很多,如果容器允許您的數據庫使用其他用戶當前不需要的資源,則您可以輕鬆看到穩定高於保證的性能。

我懷疑在更大的heroku計劃中的人更有可能實際上正在使用您共享容器的系統的資源。

如果你做一個促銷故障轉移到更大的實例,其中所有的用戶都沒有,因爲他們確實需要通過更大的機器提供你實際上可以得到全面資源的資源,因爲每個人的實際使用他們的股份。

Heroku對運行其DB的系統提供如此小的可見性令人沮喪。很難說出它們在容器主機之間的負載平衡方式,系統的底層負載如何等等。

在評論中,@Forrest pointed out that Heroku have a useful page on their server details表明只有較低層的是多租戶,但較高層是不。這很容易解釋這裏觀察到的性能損失,並且符合我上面的評論,下面的計劃允許Forrest從其他用戶借入未使用的資源。

+0

這是問題所在。看起來我們的kappa服務器夥伴並沒有太多使用它,而且我們在Ronin服務器上看到很多「竊取」的東西。在Ika計劃之前,我們不會獲得這種CPU性能。 https://devcenter.heroku.com/articles/heroku-postgres-production-tier-technical-characterization – Forrest

+0

還應該指出,即使是新的Ronin服務器的表現也比我們原來的Kappa慢。如果其他人正在考慮從kappa升級,請確保您的性能真正惡化,因爲您可能會丟失CPU。 – Forrest

+0

@Forrest這是一個非常有用的文章,你鏈接到。謝謝。我不知道只有較低端的Heroku實例使用openvz的多租戶主機;這解釋了我過去見過的很多異常行爲。 –

0

我們剛剛遷移並注意到同樣緩慢。然而,我沒有得到支持的正式答案。我的用戶抱怨,我現在對Heroku很失望。

+0

我們確實發現重新配置有助於緩解問題。可能值得一試。祝你好運! – Forrest