Медленное соединение с клиентом блокирует Mongrel - PullRequest
0 голосов
/ 12 мая 2009

У меня есть установка Apache + Haproxy + Mongrel для моего приложения rails. Когда я захожу на определенную страницу сервера, mongrel обрабатывает запрос примерно за 100 мс, и я получаю страницу за 5 с из-за времени передачи данных по медленному домашнему соединению.

Теперь я вижу, что в течение этих 5 секунд передачи данных mongrel не обслуживает никаких других запросов. Я удивлен, поскольку это означает, что mongrel передает html-ответ клиенту и блокируется до тех пор, пока клиент его не получит. Разве ответная реакция не должна быть работой Apache?

Это ставит серьезное узкое место в число запросов, которые Mongrel может обслуживать, поскольку это будет зависеть от скорости клиентского соединения. Есть ли способ, которым html, сгенерированный mongrel, обслуживается apache / haproxy или любым другим веб-сервером, например, nginx?
Интересно, как другие сайты с высоким трафиком управляют этим?

Ответы [ 2 ]

1 голос
/ 12 мая 2009

Большинство сайтов, которые используют монгрел, используют их в большом количестве, так как они блокируются так, как вы.

Вы, вероятно, захотите заглянуть в пассажира, поскольку именно так они и идут в наши дни.

0 голосов
/ 14 июня 2010

mongrel сам по себе является многопоточным, но по умолчанию рельсы могут обрабатывать только один процесс, хотя это можно изменить в конфигурации. В случае с беспородными, используйте беспородные кластеры.

Пассажир FYI также создает пул приложений, но его удобнее развертывать, он лучше печатается и сейчас более популярен.

...