2011-11-19 93 views
1

我在3個應用程序服務器(3個節點)上運行Rails 3.1應用程序。 部署時,資產管道通過capistrano鉤子在所有3個實例上編譯資產,服務器負載過高。在rails 3.1應用程序中,我可以從一臺服務器上編譯和提供靜態資產嗎?

我可以做的事情是預先編譯資產並上傳到應用服務器。

在最前面,我運行Nginx來在集羣中分配請求。

我的問題是我可以只在一臺服務器上編譯資源並僅通過該實例提供資源嗎?

這將減少所有3個應用程序服務器上資產的編譯/上傳。有沒有人以這種方式部署?

回答

1

解決此問題的最簡單方法是在本地編譯,提交文件並上載,而不運行編譯任務。

另一種方法是在本地編譯,上傳到任何你想要的服務器,並設置nginx將請求轉發到該服務器。

第三種方法是將本地編譯的資源上傳到所有三臺服務器,並讓nginx像以前一樣平衡負載。

你應該不管做什麼都應該做的事情是設置nginx爲/ assets添加遠期標題並設置最大壓縮。這減少了對這些資產的請求(由於客戶端緩存),並且在第一次請求時減少了交付時間。

相關問題