O servidor OpenLiteSpeed ​​no EC2 atinge o tempo limite em um pequeno site de comércio eletrônico

O servidor OpenLiteSpeed ​​no EC2 atinge o tempo limite em um pequeno site de comércio eletrônico

Espero que você esteja bem - estou executando um site Wordpress com Woocommerce em um servidor web OpenLiteSpeed ​​​​que, sob uso intenso de PHP, começa a mostrar erros de tempo limite 504. Estou hospedando tudo na AWS e estou lutando para identificar as causas dos erros 504 e o que poderia ser melhorado para evitá-los. Aqui estão alguns detalhes:

Configuração da AWS:

  • O servidor web é instalado em uma instância t3.medium com Ubuntu 20.04 amd64 e 50 Gb de armazenamento EBS (otimização de E/S habilitada). Cerca de 10 Gb estão sendo usados ​​​​a partir de agora.
  • Executando PHP 7.4 e
  • Estou usando duas distribuições do CloudFront para CDN: uma para servidor de imagens (em S3) e outra para servidor de arquivos CSS/JS.
  • Eu tenho um ELB para gerenciar o tráfego para o servidor Web. O tempo limite de inatividade está definido para 300 segundos.
  • Eu tenho uma instância RDS db.t3.small (100Gb gp2) executando o Mariadb 10.5.13, o tamanho do banco de dados é de cerca de 1,5gGb.
  • Estou usando o Redis ElastiCache com três nós cache.t3.micro.

Estatísticas do site:

  • O site tem cerca de 1.000 acessos por semana.
  • Cerca de 350 páginas de produtos e 50 páginas.
  • O tamanho da página varia de 500kb a 13,5Mb.

Qual é o problema?

  • O site está atingindo o tempo limite e gerando erros 504 ao usar funções PHP pesadas, como upload de produtos (e anexar imagens a eles), upload de imagens, liberando o cache do OLS várias vezes (cerca de 3-4) em um pequeno intervalo de tempo ou navegando o site abrindo várias páginas de produtos e adicionando-as ao carrinho.
  • EC2 CPUUtilization mostra picos máximos de 99%, mas a largura de banda da rede parece boa, atingindo picos máximos de 2,0 Gb e os créditos de CPU permanecem estáveis.
  • As conexões de banco de dados atingem o pico de 50 por minuto e a utilização da CPU oscila entre 20% e 30%.
  • O crédito estourado permanece estável.
  • stderr.log mostra muito "Limite máximo de processos filhos atingido: 35, extra: 0, atual: 35, ocupado: 35, aumente LSAPI_CHILDREN.".

Capturas de tela (instância EC2):

% de utilização da CPU

NetIn+NetOut

Saldo de créditos de CPU

O que eu tentei até agora:

  • Tentei aumentar o máximo de conexões e processos filhos para 350, mas o problema de tempo limite permanece.
  • Aumentei o limite de memória do php.ini para 512 MB, mas não fez nenhuma diferença.
  • Tentei aumentar o armazenamento de banco de dados de 30 Gb para 100 Gb, sem sorte.
  • Tentei aumentar o armazenamento da instância EC2 de 30 Gb para 50 Gb, mas novamente sem sorte.

Perguntas/ajuda necessária:

  • Com base na minha configuração, quais métricas (e sua agregação) devo procurar para identificar as causas raiz do tempo limite? A AWS tem tantas informações que estou confuso sobre o que poderia realmente mover a agulha.
  • Devo ampliar minha instância do EC2 para permitir mais potência de CPU? 0r devo ampliar minha instância do RDS? ou nenhum? Estou com orçamento limitado, então esta opção não é realmente viável.
  • Existe alguma configuração no servidor web que eu possa tentar? Eu poderia enviar meu arquivo conf se isso ajudar.
  • Devo simplesmente mover tudo para uma hospedagem gerenciada e viver feliz para sempre?

desde já, obrigado

informação relacionada