У меня есть процесс Ruby, непрерывно работающий на экземпляре m3.medium EC2, отображающий содержимое из очереди в S3. Он иногда умирает (обычно несколько раз в день), без видимых причин и объяснений.Отладка загадочного процесса рубинового процесса
Приложение развернуто с помощью эластичного материала и запускается с помощью сценария ebextensions, который запускает ruby --verbose app.rb
и передает ошибки в файлы (изначально без --verbose, но мы добавили это в надежде на более подробную информацию). После выхода в файл ничего нет, указывающее на ошибку. Верхнего уровня приложения выглядит следующим образом:
loop do
begin
do_processing
rescue Exception => e
puts "Error! #{e}"
end
end
так что вряд ли выход сам по себе или с исключениями (я думаю).
Сервер остается работоспособным и не исчерпывает память. Иногда он падает при максимальной нагрузке (до 100% от CPU), но не всегда.
Есть ли инструменты Ruby для получения дополнительной информации о том, почему процесс ушел? Возможно ли, что я удалю некоторые другие ограничения EC2 или Ruby, которые закрывают процесс? Что я могу сделать, чтобы получить дополнительную информацию о том, что здесь произошло?
Это не похоже на проблему с Ruby per-see, если процесс убит извне, а не исключение или segfault, вы не получите никакой соответствующей информации AFAIK. Попробуйте '/ var/log/syslog' и посмотрите, есть ли у него какие-либо подсказки. – Kris