Я создаю довольно простое веб-приложение, и мне нужно примерно понять, какую нагрузку может выдержать мой сервер.
Конечно, это зависит от множества факторов, но мне просто нужно приблизительное представление, если мы говорим о десяти или десяти тысячах пользователей, потому что на данный момент я понятия не имею.
Стандартная установка LAMP с довольно небольшой базой данных и достаточно простым и быстрым PHP. Для каждого нестатического запроса требуется около 20 простых SQL-запросов. Без нагрузки время выполнения такого запроса составляет около 50 мс. Нет явного кеширования.
Текущий хостинг находится на VPS с 1 ГБ оперативной памяти и неизвестным процессором.
Можно ли при этом дать приблизительную оценку? В чем узкое место? CPU, RAM? Означает ли 50 мс / запрос 20 запросов в секунду? Насколько может помочь кеширование (коэффициент 10? 100? 1000?)? Где кеширование имеет наибольший смысл? Как провести нагрузочное тестирование?
Уу, много вопросов, не ожидая подробных ответов, но я был бы очень признателен за указатели, куда я могу пойти дальше, чтобы прочитать о системных требованиях / тестировании / возможных способах масштабирования!
Использовать Скамья Apache (ab
).
Количество пользователей практически не имеет значения - важно количество обращений и то, как быстро они меняются. «довольно маленькая база данных» - это не очень полезный показатель.
Текущий хостинг
Значит, вы уже настроили и запустили? Тогда вы находитесь дальше, чем мы, чтобы оценить вместимость. Начните записывать% D в свои журналы apache (если вы еще этого не сделали) и регистрировать медленные запросы mysql с порогом 0.
Для каждого нестатического запроса требуется около 20 простых SQL-запросов.
эрк! это много обращений к базе данных. Рассматривается ли использование соединений (даже декартовы соединения для запросов, возвращающих отдельные строки, могут дать большой прирост производительности) или кэширования на стороне сервера?
Означает ли 50 мс / запрос 20 запросов в секунду?
Нет - это может означать, что он может обрабатывать 500 запросов за 50 мс, или это может означать, что он может обрабатывать только один запрос каждые 50 мс.
Пойдите, прочтите некоторые из Стив Судер прочее.
Ограничивающим фактором в вашей текущей системе, вероятно, является память (поместится ли вся ваша база данных и файлы для веб-сайта в доступную для кэширования память? Я подозреваю, что нет).