Пассажир порождает новые экземпляры ruby ​​на вызовах Ajax - PullRequest
0 голосов
/ 16 июля 2010

У меня серьезные проблемы с вызовами Passenger и ajax.Кажется, что каждый раз, когда я делаю ajax-вызов, запускается новый экземпляр ruby ​​вместо того, который отвечает на исходный запрос страницы, что делает его действительно медленным.Тот факт, что несколько запросов ajax могут быть сделаны за несколько секунд, не делает ситуацию лучше.

Действие, которое я вызываю, само по себе довольно медленное (генерирует PDF, который обычно занимает 5-10секунд), но при вызове через Ajax время отклика составляет 1-3 минуты!Это не создает проблем в моей среде разработки, так как я использую один экземпляр mongrel, но у Passenger действительно есть проблема.

Я попробовал опции Apache / Passenger, предоставленные для этого SO вопроса , но без удачи.

Кто-нибудь, кто сталкивался с подобными проблемами и нашел обходной путь?

Ответы [ 2 ]

0 голосов
/ 22 июля 2010

На самом деле ответ лежит в вопросе.Проблема заключается в том, что Passenger порождает множество новых экземпляров приложений вместо использования существующего пула.Поэтому один из способов исправить это - установить максимальное количество работников:

PassengerMaxPoolSize 2

Это решило мою проблему и сократило время отклика до 10-25% от исходного времени.* Обновление

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

PassengerMaxInstancesPerApp 1
0 голосов
/ 21 июля 2010

Когда вы запускаете запрос AJAX? Возможно, это совпадает с загрузкой страницы?

Может оказаться полезным подождать, пока событие DOM load не будет запущено, запрос AJAX.

...