Рейтинг:0

Сервер Apache очень медленный для большого трафика

флаг sa

Я использую Apache 2 на экземпляре AWS ec2. У меня есть балансировщик нагрузки приложений с двумя подключенными к нему экземплярами/серверами. Каждый тип экземпляра — m5.8XLarge.

Мое приложение разработано в Laravel, я использую RDS.

У меня 300 000 посетителей в день и 10 000 посетителей одновременно. Мой веб-сайт очень медленный, а начальное время отклика сервера очень велико, до 8 секунд.

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

У меня есть дополнительные настройки в файле httpd.conf ниже

 MaxKeepAliveRequests 500
 Активность включена
 KeepAliveTimeout 5
 HostnameLookups Off

<IfModule prefork.c>
  Стартовые серверы 5
  Минимальные запасные серверы 20
  Макс. Спаресерверс 40
  Максимальное количество клиентов 200
  MaxRequestsPerChild 4000
</ЕслиМодуль>

Как я могу улучшить скорость сервера и позволить apache обрабатывать большую нагрузку/посетителей

vidarlo avatar
флаг ar
В чем ваше узкое место? База данных, Apache или время обработки вашего приложения?
Muhammad Shafiq avatar
флаг sa
Время ответа сервера. Apache плюс время обработки. Сервер слишком долго отвечает пользователю
vidarlo avatar
флаг ar
Да, это конечный результат. Но ты хоть представляешь, как выстраивается это время? Он ожидает базы данных, занят обработкой вашего приложения или занят чтением с диска?
Tim avatar
флаг gp
Tim
Вам нужно потратить некоторое время на то, чтобы понять, каков предел.Вам также необходимо использовать облачную модель для развертывания, например, размещая общие образы в EFS, а не на серверах. Серверы в облаке в идеале должны считаться эфемерными (временными) и иметь возможность замены в любое время, чтобы вам было легче увеличивать и уменьшать масштабы. Масштабирование с использованием более дешевых серверов меньшего размера снижает затраты при низкой нагрузке и помогает избежать узких мест на одном сервере.
Muhammad Shafiq avatar
флаг sa
Я использую S3 и CloudFront в качестве CDN для изображений и файлов. На домашней странице нет подключения к базе данных. Так что единственное, что нужно проверить, это приложение Apache и laravel. Вы предлагаете преобразовать apache mpm в worker?
Рейтинг:0
флаг cn

Вы должны посмотреть на использование Группа автоматического масштабирования для горизонтального масштабирования приложения, если это возможно. Один сервер всегда достигает предела производительности, поэтому мы используем балансировщики нагрузки. Если вы уже используете 2 экземпляра, просто добавьте еще! Пока ваша архитектура поддерживает это.

Если нет, вы можете масштабировать по вертикали, используя более крупный экземпляр EC2.Вы не говорите, какой экземпляр вы используете в настоящее время, поэтому я не могу дать никаких рекомендаций.

Muhammad Shafiq avatar
флаг sa
Я добавил больше пояснений к вопросу. Я не могу использовать автомасштабирование, потому что мое содержимое динамично и часто меняется. Автомасштабирование использует старые IMAG. Также я использую 2 сервера типа m5.8xlarge ec2.
Muhammad Shafiq avatar
флаг sa
Вы предлагаете мне переключить apache на mpm_worker_module? и какие должны быть возможные настройки для этого?
флаг cn
Я не понимаю, почему «мое содержимое динамично и часто меняется» останавливает автоматическое масштабирование.
Muhammad Shafiq avatar
флаг sa
AWS Auto Scaling использует образ экземпляра для запуска новых экземпляров. Этот образ будет иметь старое содержимое, поэтому вновь запущенный экземпляр также будет иметь старое содержимое.Из содержимого я имею в виду, загружаю ли я или обновляю некоторые изображения, файлы html, css или php на свой веб-сайт.
флаг cn
Пользовательские данные можно использовать при подготовке образа для настройки развертывания. Вы также можете поместить статические ресурсы, такие как изображения, в S3 и обновить их отдельно. Возможно, лучше всего пройти обучение по AWS через онлайн-провайдера, так как это может дать вам гораздо больше справочной информации, чем мы можем здесь.
vidarlo avatar
флаг ar
По сути, вы пытаетесь развернуть *традиционным* способом в облачной среде. Не делай этого. Используйте облако — разделяйте данные и логику, чтобы логика могла представлять собой док-контейнер, обращающийся к данным — либо статическим из S3, либо динамическим из базы данных. Это упрощает масштабирование; раскрутить больше контейнеров, когда это необходимо. Я согласен с @ shearn89 — научитесь использовать облако и масштабироваться в облачной среде.
флаг jp
Оптимизация без знания фактического узкого места — пустая трата времени и ресурсов. Сначала определите фактическое использование и насыщение ресурсов.
Muhammad Shafiq avatar
флаг sa
Я говорю о скорости домашней страницы, на домашней странице нет подключения к базе данных. Нужно ли мне конвертировать apache MPM из prefork в worker?

Ответить или комментировать

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