2016-06-17 96 views
0

我有一個完全正常運行的rails應用程序,我最近在AWS上遷移到ECS。AWS + Docker + Puma + Rails + S3,上傳幾小時後上傳失敗

我的意思是第一個小時左右,我沒有看到任何問題,那麼霧和載波寶石上傳只是停止,沒有日誌,所以永遠。

在這一刻我失敗回到我的服務器,我有這個應用程序直接安裝在haproxy loadbalancer背後的NGINX + Passanger模塊服務的CentOS服務器之上。

有了這個設置,我可以運行幾個月而不重新啓動,一切工作都很好。

現在我拿着相同的代碼,將它移到一個帶有Alpine linux基礎映像(用3.3和3.4測試)的docker容器中,在Puma web服務器gem上運行它,並在EC2實例上運行。當我啓動它時,一切正常,應用程序感覺更快,但經過一段時間(並非總是同一時期),載波+霧上傳到S3不再工作(也不受上傳文件數的影響。它工作了幾個小時,或者我只能上傳一個,而且它也只工作幾個小時)。

我沒有收到任何錯誤消息,我沒有得到任何應用程序中的日誌,我看到的只是加載的gif,永遠不會消失。

我已經做了很多測試,結果一樣。在這個時候,我打算從Puma轉移到不同的web服務器,從Alpine linux到CentOS,並且看看在哪一個遷移階段停止發生(希望它會發生)。

此外,我很抱歉,但現在我不會分享任何代碼,因爲我知道代碼工作正常,但如果需要什麼,我會很樂意將它粘貼在這裏。

我只希望有人解決同樣的問題,因爲我無法在互聯網上找到任何東西。

謝謝大家

回答

0

問題在於與應用程序共享內存的緩存。因此,當應用程序運行時,我開始同時上傳多個圖像,並且亞馬遜任務被限制爲512MB,然後在上傳過程中開始失敗。將任務的大小增加到1.5GB,並在至少使用2G內存的小型實例上運行它可以解決問題。