Сервер OpenLiteSpeed ​​на EC2 отключается по времени на небольшом сайте электронной коммерции

Сервер OpenLiteSpeed ​​на EC2 отключается по времени на небольшом сайте электронной коммерции

Надеюсь, у вас все хорошо - я управляю сайтом Wordpress с Woocommerce на веб-сервере OpenLiteSpeed, который при интенсивном использовании PHP начинает выдавать ошибки Timed-out 504. Я размещаю все в AWS и пытаюсь определить причины ошибок 504 и что можно улучшить, чтобы их избежать. Вот некоторые подробности:

Настройка AWS:

  • Веб-сервер установлен в экземпляре t3.medium с Ubuntu 20.04 amd64 и 50Gb хранилища EBS (оптимизация ввода-вывода включена). На данный момент используется около 10Gb.
  • Запуск PHP 7.4 и
  • Я использую два дистрибутива CloudFront для CDN: один для сервера изображений (в S3), а другой для сервера файлов CSS/JS.
  • У меня есть ELB для управления трафиком на веб-сервере, время простоя установлено на 300 секунд.
  • У меня есть экземпляр RDS db.t3.small (100Gb gp2) под управлением Mariadb 10.5.13, размер базы данных составляет около 1,5gGb.
  • Я использую Redis ElastiCache с тремя узлами cache.t3.micro.

Статистика сайта:

  • Сайт посещают около 1000 раз в неделю.
  • Около 350 страниц с описанием продукции и 50 страниц.
  • Размер страницы варьируется от 500 КБ до 13,5 МБ.

В чем проблема?

  • Сайт зависает и выдает ошибку 504 при использовании ресурсоемких функций PHP, таких как загрузка товаров (и прикрепление к ним изображений), загрузка изображений, многократная очистка кэша OLS (около 3-4 раз) за короткий промежуток времени или навигация по сайту с открытием множества страниц товаров и добавлением их в корзину.
  • EC2 CPUUtilization показывает максимальные пики на уровне 99%, но пропускная способность сети кажется нормальной, достигая максимальных пиков на уровне 2,0 Гбит/с, а кредиты ЦП остаются стабильными.
  • Пиковое количество подключений к базе данных составляет 50 в минуту, а загрузка ЦП колеблется от 20% до 30%.
  • Уровень кредитования остается стабильным.
  • В stderr.log много сообщений типа «Достигнуто максимальное количество дочерних процессов: 35, дополнительных: 0, текущих: 35, занятых: 35, увеличьте LSAPI_CHILDREN».

Скриншоты (экземпляр EC2):

CPUUtilization%

Входная сеть+выходная сеть

Баланс кредитов ЦП

Что я уже попробовал:

  • Я попробовал увеличить максимальное количество подключений и дочерних процессов до 350, но проблема с тайм-аутом осталась.
  • Я увеличил лимит памяти php.ini до 512 МБ, но это ничего не изменило.
  • Пробовал увеличить объем хранилища БД с 30 ГБ до 100 ГБ, но безуспешно.
  • Попробовал увеличить хранилище экземпляра EC2 с 30 ГБ до 50 ГБ, но снова безуспешно.

Вопросы/Нужна помощь:

  • На основе моих настроек, какие метрики (и их агрегацию) мне следует искать, чтобы точно определить основные причины превышения времени ожидания? У AWS так много информации, что я не знаю, что на самом деле может сдвинуть ситуацию с мертвой точки.
  • Стоит ли мне масштабировать мой экземпляр EC2, чтобы обеспечить большую мощность ЦП? Стоит ли мне масштабировать мой экземпляр RDS? Или нет? Я ограничен в бюджете, поэтому этот вариант не совсем осуществим.
  • Есть ли какая-то конфигурация на веб-сервере, которую я мог бы попробовать? Я могу загрузить свой файл conf, если это поможет.
  • Стоит ли мне просто перенести все на управляемый хостинг и жить долго и счастливо?

заранее спасибо

Связанный контент