2013-04-16 48 views
2

我在Heroku上運行RefineryCMS應用程序。這是在兩個網頁dynos,但實際的動態負載低於10%一塊(如果我正在閱讀New Relic)對於當前可忽略的13個請求每分鐘的流量。使用Rails的Heroku上的高響應隊列時間RefineryCMS

但是,我的應用程序服務器的平均響應時間在800毫秒,幾乎所有的時間都花在請求排隊上。每個其他請求會遭受3000毫秒(或更多)的請求隊列峯值,而其他一些請求會因爲積極的內存緩存而在200-300毫秒內加載得很好。

如何找出問題的根本原因是什麼?

編輯:經過對日誌的進一步調查,我不得不問自己這個問題:這是預期的RefineryCMS在Amazon S3上的資產託管行爲?

heroku[router]: method=GET path=/system/images/W1siZiIsIjIwMTMvMDQvMTQvMTUvMTAvMDkvNzY4L0pFQU5fQ0xBVURFX1BFTk5FVElFUi5qcGciXSxbInAiLCJ0aHVtYiIsIjI1MHgiXV0/JEAN-CLAUDE%20PENNETIER.jpg service=1061ms status=200 bytes=11232 
heroku[router]: method=GET path=/system/images/W1siZiIsIjIwMTMvMDQvMTQvMTUvMTEvMzkvMjI3L01BUklTU19KQU5TT05TLmpwZyJdLFsicCIsInRodW1iIiwiMjUweCJdXQ/MARISS%20JANSONS.jpg service=1161ms status=200 bytes=14358 
heroku[router]: method=GET path=/system/images/W1siZiIsIjIwMTMvMDQvMTQvMTUvMjEvNDAvOC9TaXJfTkVWSUxMRV9NQVJSSU5FUi5qcGciXSxbInAiLCJ0aHVtYiIsIjI1MHgiXV0/Sir%20NEVILLE%20MARRINER.jpg service=5412ms status=200 bytes=23191 

這些文件是託管在本地,並因此降低了請求?

回答

2

這聽起來像是運行緩慢的請求。看看日誌中的更多信息,但我懷疑你會看到一堆H12錯誤。

如果你還沒有使用Unicorn和Rack :: Timeout,通常,快速請求由其他長時間運行的請求導致的隊列減慢。通過查看使用Rack :: Timeout,您可以關閉長時間運行(例如15秒)的任何​​請求,而使用Unicorn將允許您一次提供多個請求。

這當然假設你在Cedar上運行。如果你不是,我會盡快升級。

+1

我正在運行Cedar,我正在爲兩個實例提供Unicorn服務。 Rack :: Timeout也設置爲奇數29秒,因爲我知道它比獨角獸30秒超時要好。 無論如何,我會看看日誌,看看我能否找到任何引導,但據我所知這些是Rails服務器日誌,這似乎是一個動態的問題。 –

0

您是否嘗試切換到使用獨角獸網絡服務器?

它允許您從一個測功機同時提供多個請求。

Details on setup here