Я работаю над тем, чтобы оптимизировать скорость приложения Rails, которое мы имеем в производстве.
Он построен на Apache, Passenger, Rails 2.35, Ubuntu на экземпляре m1.large EC2 (7,5 ГБ ОЗУ, 4 вычислительных блока). В ближайшее время мы перейдем на nginx, но у нас будут некоторые зависимости от права Apache. Теперь.
Я запускаю нагрузочные тесты с помощью ab и httperf.
Мы видим постоянно 45 запросов в секунду, варьирующихся от 30 до 200 одновременно работающих пользователей для простого запроса API, чтобы получить одну запись из таблицы базы данных с индексированными записями в 100 000 записей. Это кажется мне очень медленным.
Мы сосредоточены как на оптимизации кода приложения, так и на оптимизации конфигурации сервера.
В настоящее время я сосредоточен на оптимизации конфигурации сервера. Вот что я сделал до сих пор:
PassengerMaxPoolSize настроен на (90% общей памяти) / (объем памяти на одного пассажира, 230 МБ) Apache
отрегулировано MaxClients до 256 макс.
Я сделал и независимо, и вместе я не видел никакого воздействия на
REQ / сек.
Еще одно замечание: линейное масштабирование добавляется при добавлении серверов. Так что, похоже, не проблема с базой данных. 2 сервера 90 рэк / сек, 3 сервера - около 120 запросов / сек ... и т. Д.
Какие-нибудь советы? Просто кажется, что мы должны повысить производительность, добавив больше процессов?