Назад | Перейти на главную страницу

Phusion Passenger медленное отображение ответа JSON

У меня есть приложение Rails 4, которое возвращает большой объем данных, которые отображаются как JSON (23K записей / 2,8 МБ документ). При тестировании этого вызова на моем ноутбуке с использованием сервера WEBrick запрос завершился за 573 мс.

Completed 200 OK in 573ms (Views: 0.1ms | ActiveRecord: 51.2ms)

Если я перейду на Apache с Phusion Passenger, то выполнение того же самого запроса займет 3025 мсек.

Completed 200 OK in 3025ms (Views: 0.1ms | ActiveRecord: 53.9ms)

Я не могу понять, почему Passenger так медленнее. Есть какие-нибудь мысли?

Моя среда разработки работает под управлением OS X 10.7.5. У меня установлены Apache 2.2.24 и Passenger 4.0.23.

Я бы проверил

http://dtrace.org/blogs/brendan/2011/10/10/top-10-dtrace-scripts-for-mac-os-x/

и в частности раздел о «dtruss» (№5). Используйте параметр -e для определения прошедшего времени и просмотрите все системные вызовы, которые выполняет Apache с Phusion Passenger. Вы надеетесь обнаружить, что более медленный маршрут ищет в кучу дополнительных каталогов, или загружает кучу других библиотек, и т. Д., Или выполняет кучу странных DNS-вызовов. Как вы могли догадаться, маловероятно, что Phusion Passenger как-то медленнее при реальных вычислениях. Масштабируется ли разница линейно с количеством записей?

Извините, это не относится к Apache / Phusion Passenger ... Я не знаком с PP, но по моему опыту, поскольку это два отдельных сервера, вызовы от Apache к Phusion Passenger могут увеличивать задержку, чем с Webrick, поскольку он интегрирован. Самое интересное в dtruss заключается в том, что вы запускаете его на обоих серверах и смотрите, какой (больше) отвечает за задержку. Опубликуйте результаты, если попробуете эту утилиту, мне очень любопытно.