Ruby on Rails: как бы я справился с 10 одновременными пользователями?Мне нужно больше процессора? - PullRequest
0 голосов
/ 18 сентября 2010

Извините, если это может показаться очевидным.Я отслеживал, что веб-запрос в моем приложении Rails каждый раз использует 30-33% процессорного времени.Например, если я загружаю веб-страницу, то используется 30% процессорного времени.Означает ли это, что мой ящик может обрабатывать только 3 одновременных веб-запроса и остановится, если будет более 3 веб-запросов (т. Е. Я получу 100% ЦП)?что если я захочу обработать более 3 одновременных веб-запросов, то мне потребуется больше серверов для обработки нагрузки с использованием балансировщика нагрузки?(например, для обработки 6 одновременных веб-запросов мне потребуется 2 сервера; для 9 одновременных запросов мне потребуется 3 сервера; для 12 мне потребуется 4 сервера - и так далее?)

Ответы [ 3 ]

2 голосов
/ 18 сентября 2010

Ваш Apache или Nginx перед Пассажиром будет ставить запросы в очередь, пока работник Пассажира не станет доступным.Вы можете ограничить число работающих одновременно, чтобы ваш сервер никогда не останавливался (но новым посетителям придется ждать дольше, пока не наступит их очередь).

2 голосов
/ 18 сентября 2010

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

Также вы сможете объективно измерить улучшения для любых внесенных изменений.* Посмотрите на ab или httperf;Есть много других доступных инструментов.

Стефан

1 голос
/ 18 сентября 2010

Трудно сказать, основываясь на этой информации.Это очень сильно зависит от используемого вами стека веб-сервера и среды, в которой вы работаете.Различные серверы (Mongrel, Webrick, Apache с использованием различных механизмов, Unicorn) имеют разные характеристики памяти.Разные среды (разработка и тестирование или производство) демонстрируют совершенно разные характеристики использования памяти.

...