У меня установлен сервер Linux (CentOS7), и на нем запущено несколько cronjobs. Ничего особенного, но за последнюю неделю дважды сталкивался с проблемой.
Это рубиновый процесс (скорее, задача Rake), который выполняется каждые 15 минут в час. Эта задача запускает запрос от удаленного сервера SQL и создает текстовые файлы для каждой записи. Каждые 15 минут может создаваться от 5 до 20 текстовых файлов. Эти текстовые файлы (очень маленькие по размеру) затем отправляются на общий сервер Windows, где они обрабатываются отдельным приложением.
То, что произошло раньше, и я не понимаю, почему это не только породит 4 новых процесса Ruby (на основе (2) задач Rake, которые должны быть запущены, а не только полностью случайных процессов Ruby), но и полностью уничтожит всю память в Linux. сервер, и нам пришлось выполнить жесткую перезагрузку. Я сделал небольшой git commit
на сервер CentOS (буквально изменила одну строчку кода), и это породило 4 новых процесса, все Ruby, и уничтожило память на сервере.
Я не какой-то добросовестный администратор сервера, поэтому будет признателен за любое понимание того, как избежать этого в будущем. Из того, что я вижу, эта проблема появления / зависания возникает только тогда, когда происходит фиксация Github.
ОБНОВИТЬ:
Хорошо, это не похоже на git commit
является корнем проблемы, но задача rake выполняется как задание cron.
Вот работа cron:
0,15,30,45 * * * * /bin/bash -l -c 'cd /var/www/heatfst && RAILS_ENV=production bundle exec rake send_fst_tickets --silent >> /var/www/heatfst/log/cron/standard.log 2>> /var/www/heatfst/log/cron/error.log'
Когда он запускается, и я проверяю cpu% с помощью top
, он увеличивает до ~ 40% памяти процессора и просто зависает там ненадолго, никогда не возвращаясь к нормальному уровню (1-2%).