[英]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.