2013-03-06 2 views
2

Я пытаюсь запустить приложение RoR на микро-экземпляре Amazon (тот, который входит в свободный ярус). Тем не менее, я не могу успешно завершить rake assets:precompile, потому что он якобы заканчивается из ОЗУ, и система убивает процесс.Тюнинг Ruby/Rails для работы с системами с меньшим объемом памяти

Во-первых, как я могу быть уверен, что это проблема с низкой памятью?

Во-вторых, независимо от ответа на первый вопрос, есть ли какие-то параметры, которые я могу передать интерпретатору Ruby, чтобы он потреблял меньше ОЗУ - даже если ценой общей производительности приложения? Любая настройка GC возможна? Вообще ничего?

Примечание: Аналогично Making ruby on rails take up less memory

PS: Я добавил файл на основе область подкачки в системе, а также. Вот вывод cat /proc/meminfo, если это помогает:

MemTotal:   604072 kB 
MemFree:   343624 kB 
Buffers:   4476 kB 
Cached:   31568 kB 
SwapCached:  33052 kB 
Active:   17540 kB 
Inactive:   199588 kB 
Active(anon):  11408 kB 
Inactive(anon): 172644 kB 
Active(file):  6132 kB 
Inactive(file): 26944 kB 
Unevictable:   0 kB 
Mlocked:    0 kB 
SwapTotal:  292840 kB 
SwapFree:   165652 kB 
Dirty:    80 kB 
Writeback:    0 kB 
AnonPages:  149640 kB 
Mapped:    6620 kB 
Shmem:    2964 kB 
Slab:    23744 kB 
SReclaimable:  14044 kB 
SUnreclaim:   9700 kB 
KernelStack:  2056 kB 
PageTables:   6776 kB 
NFS_Unstable:   0 kB 
Bounce:    0 kB 
WritebackTmp:   0 kB 
CommitLimit:  594876 kB 
Committed_AS:  883644 kB 
VmallocTotal: 34359738367 kB 
VmallocUsed:  5200 kB 
VmallocChunk: 34359732767 kB 
HardwareCorrupted:  0 kB 
AnonHugePages:   0 kB 
HugePages_Total:  0 
HugePages_Free:  0 
HugePages_Rsvd:  0 
HugePages_Surp:  0 
Hugepagesize:  2048 kB 
DirectMap4k:  637952 kB 
DirectMap2M:   0 kB 
+0

Хорошо, поэтому я потерял 50 точек на своем реплее и до сих пор не смог получить удовлетворительное решение для этого :( –

ответ

0

Второй вопрос первый - я запускать Rails приложения на Micro экземпляров, и сделать это сейчас. До тех пор, пока ваш параллелизм будет очень низким (один или два активных пользователя, вершины, а не супер-активные), вы будете в порядке. Также обратите внимание, что Amazon будет произвольно дросселировать ваш эффективный процессор, когда захочет, если вы попытаетесь слишком сильно взломать процессор (так они делают экземпляры Micro). Нет необходимости в настройках GC или что-то в этом роде, просто настройки по умолчанию прекрасны. Я использовал «Пассажир», более старую версию, и убедился, что она разворачивает только одного разработчика процесса. Фондовая конфигурация. Особенно, если большие куски вашего приложения - это изображения или статические файлы, ваш основной веб-сервер будет обслуживать большую часть этого контента, а не Rails.

Для вашего второго вопроса - я только что проверил большое (ish) rails app, fat_free_crm, на недавно созданный микро-экземпляр. Я просто искал что-то большое.

Я приурочен к запуску активов: прекомпилел, и он действительно завершился - после очень долгого времени. Я назначил его, и он, казалось, закончил через 2 минуты 31 секунду.

Я думаю, что вам может потребоваться больше swapspace. Я бы попробовал начать концерт. Если вы еще не можете предварительно скомпилировать свои активы после этого, у вас есть еще одна проблема.

dd if=/dev/zero of=/swapfile bs=1k count=1M

mkswap /swapfile

swapon -f /swapfile

1

Положите config.assets.initialize_on_precompile = false в application.rb, чтобы избежать инициализации приложения и подключение к базе данных, когда вы прекомпилировать активов. Это может помочь.

Другой вариант - предварительно скомпилировать локально, а затем развернуть скомпилированные активы. Дополнительная информация здесь http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets

Смежные вопросы