Я настоящий новичок, когда дело касается системного администратора. Я запускаю приложение на EC2 MicroInstance.
Прежде чем я начну публично, я хочу убедиться, что достиг минимального уровня производительности. Я пробую пройти стресс-тестирование, но изо всех сил пытался найти хорошие тесты, которые помогли бы мне понять мою собственную производительность.
Я протестировал страницу, возможно, с наибольшей нагрузкой, и мне любопытно, подходит ли она для веб-сайта, который только что запускается, и, в лучшем случае, может увидеть 10 тысяч уникальных посетителей в неделю, если пресса удастся правильно.
ab -n 5000 -c 10 http://mysite.com
requests/sec: 53.36
time per request: 18.739 ms
transfer rate: 12.66kb
total transferred 1215000 bytes
Нет неудавшихся запросов. Мой процессор достиг 49%, а память не сильно облагалась налогом. Средняя нагрузка выросла до 5,70.
95% запросов были обслужены в течение 500 мс. Один запрос занял 84996 мс.
Я использую Apache2.x с mod_wsgi в Ubuntu 10.4. Я почти уверен, что MPM - это Prefork. Этот сервер находится в тестовом режиме, поэтому внешней нагрузки нет.
Параллелизм здесь кажется большой проблемой. Когда я его удаляю, сервер работает молниеносно. Когда я добавляю больше параллелизма, чем 10, я получаю сообщение об ошибке: «Указанный тайм-аут истек (70007)».
Все это может быть спорным, потому что я только начинаю. Мне любопытно услышать мнения.
Спасибо.
Некоторые вещи, на которые я хотел бы обратить внимание при настройке prefork apache:
Проверьте свои MaxClients и ServerLimit. Это сообщает вашему серверу, сколько процессов он может запускать одновременно. Вы должны ограничивать объем памяти, выполняемый каждым процессом, по сравнению с ограничениями вашей оперативной памяти. Обязательно оставьте память для других программ, работающих на сервере (система, MySQL и т. Д.)
Отметьте StartServer, MinSpareServers, MaxSpareServers. Убедитесь, что вы запускаете сервер с достаточным количеством процессов для обработки входящих запросов и достаточно, чтобы справиться с нагрузкой. Стоимость создания новых потоков относительно высока и замедлит ваши запросы.
Держите KeepAliveTimeout на низком уровне. Это в основном то, как долго процесс остается открытым достаточно долго, чтобы захватить дальнейшие запросы, прежде чем перейти к следующему запросу. Для prefork я держу на 2 KeepAliveTimeout 2
Всего несколько указателей ... надеюсь, это поможет
Помните, что у микроэкземпляров EC2 наблюдается перегрузка ЦП - вы можете использовать до двух вычислительных единиц, но только в течение короткого периода времени. По истечении этого (довольно небольшого) периода времени использование вашего ЦП будет строго ограничено на несколько минут.
Если вам нужна более стабильная производительность, перейдите к типу Small instance.