簡體   English   中英

Rake資產:在生產中打開控制台會話時,預編譯會被殺死

[英]Rake assets:precompile gets killed when there is a console session open in production

在我的生產服務器上,托管在數字海洋上,如果有幫助,Ubuntu 12.04,我有RoR 4和rake 10.1.1。

當我部署時,我運行rake assets:precompile ,我注意到一個奇怪的問題,如果我在執行此操作時打開rails console會話,我會得到以下輸出

~# rake assets:precompile
~# Killed

這主要是煩人的,但我希望它解決的原因是在招聘新的開發人員時,會出現部署/控制台沖突的噩夢。

謝謝,

布賴恩

您的預編譯過程可能因為RAM耗盡而被殺死。 您可以通過在另一個ssh會話中運行top來確認這一點。 要解決此問題,請創建一個在RAM已滿時使用的交換文件。

在Ubuntu上創建SWAP空間如果您計划在Digital Ocean 512MB RAM Droplet上使用Rails,您可能最終需要一些交換空間。 具體而言,在編譯資產時,RAM將耗盡,導致進程被靜靜地殺死並阻止成功部署。

要查看是否有交換文件:

sudo swapon -s

沒有顯示交換文件? 檢查您有多少磁盤空間:

 df

要創建交換文件:

第1步:為交換分配文件

sudo fallocate -l 2048m /mnt/swap_file.swap

第2步:更改權限

sudo chmod 600 /mnt/swap_file.swap

第3步:格式化文件以交換設備

sudo mkswap /mnt/swap_file.swap

第4步:啟用交換

sudo swapon /mnt/swap_file.swap

步驟5:確保重新啟動時掛載交換。 首先,打開fstab

sudo nano /etc/fstab

最后,在fstab中添加條目(僅當它沒有自動添加時)

# /etc/fstab
/mnt/swap_file.swap none swap sw 0 0 

保存並退出。 你完成了添加交換。 現在你的rake assets:precompile應該完成而不會被殺死。

Rake assets:precompile是一個記憶進食過程。

因此,在使用該命令之前,請確保您有足夠的RAM

我在aws上有一個opsworks堆棧,我想改變我的實例類型。 我正在使用t1.micro,我只是將其更改為t1.small

非常感謝。

這使用了大量的RAM。 要檢查可用的RAM內存量,請使用該命令

free -m

這將顯示以MB為單位的可用RAM

臨時解決方案是創建交換空間。

在你進入他的步驟之前,我打算將此作為對Jason R帖子的評論添加,以確保它是RAM資源問題。

你也可以跑

echo {1,2,3} > /proc/sys/vm/drop_caches

清理緩存內存,但它可能不會釋放足夠的空間。

這可能對某人有幫助。 對我來說,因為我不能使用'fallocate'命令,我必須這樣做:

sudo dd if=/dev/zero of=/mnt/4GB.swap bs=4096 count=1048576
sudo chmod 600 /mnt/4GBB.swap
sudo mkswap /mnt/4GB.swap
sudo swapon /mnt/4GB.swap

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM