У меня есть rake task
, и когда я запускаю его в консоли, это killed
. Этот rake task
работает с таблицей cca 40.000 rows
, я думаю, это может быть проблема с нехваткой памяти .
Кроме того, я считаю, что этот используемый запрос оптимизирован для работы с длинными таблицами:
MyModel.where(:processed => false).pluck(:attribute_for_analysis).find_each(:batch_size => 100) do |a|
# deal with 40000 rows and only attribute `attribute_for_analysis`.
end
Эта задача не будет выполняться в будущем на регулярной основе, поэтому я хочу избегать некоторых решений для мониторинга заданий, таких как God
и т. Д., Но учитывая background jobs
, например, Спасательная работа.
Я работаю с Ubuntu
, ruby 2.0
и rails 3.2.14
> My free memory is as follows:
Mem: total used free shared buffers cached
3891076 1901532 1989544 0 1240 368128
-/+ buffers/cache: 1532164 2358912
Swap: 4035580 507108 3528472
ВОПРОСЫ:
- Как выяснить, почему
rake task is always killed
(ответили) - Как заставить этот
rake task
работать (не ответил - все равно убит) - В чем разница между
total-vm
,aton-rs
,file-rss
(без ответа)
ОБНОВЛЕНИЕ 1
-Может кто-нибудь объяснить разницу между ?:
- total-vm
- анон-rss
- файл-rss
$ grep "Killed process" /var/log/syslog
Dec 25 13:31:14 Lenovo-G580 kernel: [15692.810010] Killed process 10017 (ruby) total-vm:5605064kB, anon-rss:3126296kB, file-rss:988kB
Dec 25 13:56:44 Lenovo-G580 kernel: [17221.484357] Killed process 10308 (ruby) total-vm:5832176kB, anon-rss:3190528kB, file-rss:1092kB
Dec 25 13:56:44 Lenovo-G580 kernel: [17221.498432] Killed process 10334 (ruby-timer-thr) total-vm:5832176kB, anon-rss:3190536kB, file-rss:1092kB
Dec 25 15:03:50 Lenovo-G580 kernel: [21243.138675] Killed process 11586 (ruby) total-vm:5547856kB, anon-rss:3085052kB, file-rss:1008kB
ОБНОВЛЕНИЕ 2
- модифицированный запрос, подобный этому, и
rake task
все еще убит.
MyModel.where(:processed => false).find_in_batches do |group| p system("free -k") group.each do |row| # process end end
system
? - person SergeyKutsko   schedule 25.12.2013pluck
возвращает массив, в котором нетfind_each
метода. - person cutalion   schedule 25.12.2013cached
составляет около 1304M - person   schedule 25.12.2013limit(1)
,limit(10)
,limit(100)
,limit(1000)
. Как скоро задача будет убита после запуска? - person cutalion   schedule 25.12.2013