Приложение Rails случайно выходит из строя с ошибкой "Преждевременный конец заголовков script"

Я размещаю приложение Ruby on Rails 2.0.2 на DreamHost. Он находится на сервере Apache 2, работающем поверх Phusion Passenger.

Приложение часто возвращает 500 ошибок "Не удалось запустить приложение Rails, но в произвольные моменты времени. Это происходит, когда приложение находится под более высокой нагрузкой, хотя я не могу это подтвердить. Он получает около 2000 просмотров страниц в день, поэтому я не думаю, что загрузка действительно должна быть проблемой.

Журналы Apache сопоставляют эти 500 ответов с ошибкой: "Преждевременный конец заголовков script". Сегодня, глядя на журналы в 9 утра, ошибка появляется так часто, как три или четыре раза в минуту. Это явно неприемлемо.

Менее часто приложение швыряет страницу Phusion Passenger со следами стека и ошибкой "Broken pipe".

В журналах Rails не указаны какие-либо из этих ошибок.

Это происходит как на промежуточных, так и на живых сайтах, размещенных на DreamHost, но я не могу реплицировать их на локальном сервере разработки.

Итак, я предполагаю, что реальный вопрос: Где я начинаю отлаживать эту проблему?

Ответы

Ответ 1

Оказывается, я просто ударил свою память на общем сервере DreamHost.

Я запускал несколько приложений Rails под одной учетной записью, многие из них были только для тестирования и прототипирования. Rails использует много памяти, поэтому я быстро достиг своего распределения. Поддержка сообщила мне, что "я проверил наши журналы и убил один из ваших рубиновых процессов 2325 раз за последние три дня". Упс.

Решение: попробуйте не запускать Rails в общей среде, если вы можете ему помочь. Я скоро переключу хотя бы одно из моих приложений на хост VPS.

Ответ 2

Используется ли последняя версия пассажира (2.2.2 на момент написания). У меня было несколько ошибок, но большинство (если не все) исчезли после обновления моей пассажирской установки.

Если это не ответ, вы всегда можете попытаться обновить версию рельсов до версии 2.3 и посмотреть, не исчезла ли проблема.