Раньше я всегда получал их на Apache1 / fastcgi. Я думаю, что это вызвано зависанием fastcgi до того, как Ruby готов.
Переключение на дворнягу - хороший первый шаг, но есть еще кое-что. Это плохая идея отбирать из веб-сервисов на живых страницах, особенно из Rails. Rails не является потокобезопасным. Количество одновременных соединений, которые вы можете поддерживать, равно количеству шавок (или процессов Пассажира) в вашем кластере.
Если у вас есть один монгрел, и кто-то заходит на страницу, которая вызывает веб-службу, время ожидания которой составляет 10 секунд, каждый запрос к вашему веб-сайту будет задерживаться в течение этого времени. Большинство балансировщиков нагрузки просто слепо переключают ваши шавки, поэтому, если у вас есть две шавки, для каждого другого запроса будет время ожидания.
Все, что может быть непредсказуемо медленным, должно происходить в очереди заданий. Первое нажатие на / slow / action добавляет задание в очередь, а / slow / action продолжает обновляться через обновления страницы или запросы через ajax до тех пор, пока задание не будет завершено, а затем вы получите результаты из очереди заданий. В настоящее время существует несколько очередей заданий для Rails, но самая старая и, вероятно, наиболее широко используемая - это BackgroundRB .
Другая альтернатива, в зависимости от характера вашего приложения, заключается в отбраковке службы каждые N минут через cron, локальном кешировании данных и чтении вашей страницы в реальном времени из кеша.