Criei um produto SaaS. Estou usando PHP 8.3 com um banco de dados MySQL 8.0. Localmente isso é muito rápido! Nenhuma estrutura etc. é usada. A produção é executada no Azure. Tenho a seguinte configuração no Azure:
Base de dados
Azure Database for MySQL flexible server
- Burstable, B1s, 1 vCores, 1 GiB RAM, 20 GiB storage
- MySQL version 8
O custo ronda os 20 euros/mês.
Serviço de aplicativo
Azure Web App
Basic B1, 100 ACU/vCPU, 1 vCPU, 1.75 memory (GB), 10 GB storage
OS: Linux
O custo ronda os 10 euros/mês
o problema que estou enfrentando é que inicialmente quando um usuário aleatório acessa meu site e executa uma ação onde uma consulta ao banco de dados é necessária. O banco de dados é MUITO lento no início. Pode levar de 3 a 10 segundos! Após esse 'aquecimento', cada novo usuário que acessa o site não sofre atrasos e as consultas ao banco de dados são muito rápidas. Digamos que se passem de 30 a 60 minutos e não haja atividade no site e um novo usuário acesse o site, está muito lento novamente. Isso NÃO é algo que eu quero. O que devo fazer para remover esse 'aquecimento'?
Dir-se-ia que uma base de dados de ~20 euros/mês teria um desempenho melhor. Eu tive bancos de dados MySQL mais baratos e com melhor desempenho.
Notas:
- O aplicativo da Web está definido como 'Sempre ativado'
- Meu banco de dados é MUITO pequeno e perfeitamente otimizado, aproximadamente 5 tabelas, aproximadamente 100 registros
- Meu 'innodb_buffer_pool_dump_at_shutdown' está definido como ON
- Meu 'innodb_buffer_pool_load_at_startup' está definido como ON
- Meu 'innodb_buffer_pool_size' tem 134217728 bytes (~128 MB)
- O serviço MySql e App é executado em uma vnet
- MySql e serviço de aplicativo usam SSL
- Tudo o que tenho está na mesma região (Europa Ocidental), tal como o meu público