Как отладить процесс Ruby, который постоянно загружается?

Как отладить процесс Ruby, который постоянно загружается?

Несколько дней назад на всех 4 моих серверах приложений начались проблемы. Это произошло после того, как я развернул какой-то код, но все, что я сделал, это обновил локальный файл базы данных, в котором хранятся некоторые IP-адреса, поэтому я не вносил никаких фактических изменений в код. Кажется, что как раз в это время мои процессы Ruby выходят из-под контроля. Они будут в порядке некоторое время, а затем внезапно быстро поднимутся до 100% CPU на одном CPU. Поскольку я использую Passenger, в конечном итоге другой поток сделает то же самое и максимально загрузит другой CPU, и так далее и тому подобное, пока веб-сервер не сможет больше обрабатывать трафик и не перестанет отвечать.

Я много копал (в чем я не силен), но, по крайней мере, обнаружил, что при запуске strace на процессах они выглядят вполне нормально, а затем, когда они сходят с ума, как описано выше, это просто непрерывный поток вызовов clock_gettime(CLOCK_REALTIME, {1518938625, 9566131}) = 0. Обычный процесс, как я сказал, не постоянно выплевывает всякую всячину, только когда приходит веб-запрос, например, но затем что-то его запускает, и он просто сходит с ума, пока я не убью процесс, или не перезапущу Passenger, или не перезагружу сервер. Затем в течение часа или двух снова возникают проблемы.

Я занимаюсь этим уже пару дней, нянчусь с ним, постоянно перезапускаю все, чтобы он продолжал хромать, но мне отчаянно нужны какие-то идеи. Я заметил пару очень старых постов, где-то с 2013 года, в которых говорится о 100% проблеме с процессором с этой штукой clock_gettime, и я попробовал оба предложения, которые связаны с несколькими постами, которые я видел. Одно из них устанавливает переменную TZ, а другое должно исправить какую-то ошибку с секундой високосного года. Я не понимаю смысла ни одного из предложенных исправлений, но, к сожалению, они не сработали.

Я использую следующий стек: ruby ​​2.2.0 Passenger standalone: ​​Gem Version: 4.0.58 (и пробовал обновиться до 5.2.0 на одном сервере без каких-либо изменений в поведении) MySQL CentOS 6.9

Связанный контент