Pular para o conteúdo

Entenda 7 ajustes no Apache: exemplo real para hamburguerias

Por Equipe Técnica AviraHost · 15 min de leitura · Atualizado em · Apache, performance-web, picos-pedidos, hamburguerias, KeepAlive, monitoramento, AviraHost · 0

Ajustes no Apache para hamburguerias são configurações de concorrência, conexão, compressão, cache e observabilidade que ajudam o servidor a absorver picos de pedidos sem esgotar recursos. Para aplicá-los com segurança, dimensione os valores conforme a memória disponível e valide cada mudança sob carga controlada:

  1. Registre uma linha de base de CPU, memória, conexões e tempo de resposta.
  2. Use o MPM event e dimensione processos, threads e MaxRequestWorkers.
  3. Ative KeepAlive com tempo limite curto e quantidade controlada de requisições.
  4. Ajuste Timeout para evitar processos presos por clientes lentos.
  5. Comprima respostas textuais e configure cache para arquivos estáticos.
  6. Monitore o Apache durante uma simulação de acessos concorrentes.

Pré-requisitos

O tuning do Apache deve começar com acesso administrativo e uma forma segura de reverter alterações. O exemplo considera Apache instalado diretamente no Debian 13 ou distribuição equivalente, com um site de pedidos já publicado em seudominio.com.br.

  • Acesso por SSH com usuário autorizado a executar sudo.
  • Apache ativo e VirtualHost funcional para o sistema da hamburgueria.
  • MPM event disponível e compatibilidade da aplicação com essa modalidade.
  • Espaço para salvar uma cópia dos arquivos de configuração.
  • Acesso aos logs de erro e de requisições do Apache.
  • Ambiente controlado para teste de concorrência, sem gerar pedidos reais.

Antes de alterar qualquer diretiva, confirme o acesso ao servidor. Se houver dificuldade nessa etapa, consulte Acessando servidores VPS Linux da AviraHost. Também é importante separar desempenho de aplicação e desempenho HTTP: consultas lentas, integrações de pagamento bloqueadas ou código PHP demorado não são corrigidos apenas pelo Apache.

Medir a capacidade antes dos ajustes no Apache

A linha de base de desempenho mostra como o servidor se comporta antes do horário de maior movimento. Em uma hamburgueria, o tráfego costuma percorrer cardápio, carrinho, cálculo de entrega e confirmação; portanto, medir somente a página inicial pode esconder o consumo real das rotas dinâmicas.

Ajustes no Apache para hamburguerias começam pela medição

Registre o MPM carregado, a sintaxe atual, o consumo dos processos e as conexões nas portas HTTP e HTTPS. Execute os comandos enquanto o sistema estiver em condição normal e repita a coleta durante o teste controlado.

sudo apachectl -M | grep mpm
sudo apachectl configtest
ps -C apache2 -o pid,rss,cmd
ss -s
sudo systemctl status apache2 --no-pager
Output esperado:
 mpm_event_module (shared)
Syntax OK
Lista de processos apache2 com a coluna RSS
Resumo das conexões TCP
apache2.service com estado active (running)

O RSS ajuda a observar a memória ocupada por processo, mas não deve ser somado de maneira ingênua porque páginas compartilhadas podem aparecer em mais de um processo. Compare várias coletas e mantenha margem para o sistema, a aplicação e outros serviços. Se o MPM exibido não for event, verifique primeiro a compatibilidade do PHP e dos módulos carregados antes de trocar o modelo de processamento.

Configurar MPM event e concorrência para pedidos online

O MPM event do Apache organiza processos e threads para atender conexões concorrentes. O ajuste central é MaxRequestWorkers: um valor baixo pode formar fila; um valor alto demais pode consumir a memória disponível e levar o sistema a paginação intensa ou encerramento de processos.

1. Ativar o MPM event com validação prévia

Atenção: não desative o MPM atual se a aplicação depender de um módulo incompatível com o MPM event. Faça backup e confirme como o PHP está integrado ao Apache antes da troca.

sudo cp -a /etc/apache2/mods-enabled /etc/apache2/mods-enabled.backup
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo apachectl configtest
sudo systemctl reload apache2
Output esperado:
Module mpm_prefork disabled.
Enabling module mpm_event.
Syntax OK
Reload concluído sem mensagem de erro

Se o comando informar conflito entre módulos, restaure a configuração anterior em vez de forçar o reload. O servidor deve carregar apenas um MPM.

2. Dimensionar processos, threads e MaxRequestWorkers

Edite /etc/apache2/mods-available/mpm_event.conf e adote valores iniciais coerentes entre si. No exemplo abaixo, MaxRequestWorkers é múltiplo de ThreadsPerChild. Os números são um ponto de partida funcional, não uma recomendação universal:

<IfModule mpm_event_module>
    StartServers             2
    MinSpareThreads         25
    MaxSpareThreads         75
    ThreadLimit             64
    ThreadsPerChild         25
    MaxRequestWorkers      150
    MaxConnectionsPerChild 1000
</IfModule>
Output esperado após salvar e validar:
Syntax OK

Calcule o limite usando memória disponível, consumo observado e margem operacional. MaxConnectionsPerChild recicla processos depois de determinado número de conexões, o que pode conter crescimento gradual de memória, mas também cria renovação de processos. Altere uma variável por vez e compare filas, erros e estabilidade.

Ajustar conexões persistentes e tempo limite

O KeepAlive no Apache permite que mais de um recurso seja transferido pela mesma conexão. Isso favorece páginas de cardápio compostas por HTML, CSS, JavaScript e imagens, mas conexões mantidas por tempo excessivo podem ocupar capacidade durante um pico.

3. Ativar KeepAlive com limite controlado

Adicione as diretivas à configuração global aplicável. O tempo ideal depende do comportamento real dos clientes e deve ser confirmado por teste:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 2
Output esperado após executar apachectl configtest:
Syntax OK

Um KeepAliveTimeout curto reduz o período ocioso, enquanto MaxKeepAliveRequests evita uma conexão persistente sem limite prático. Observe se clientes legítimos concluem o carregamento e se a quantidade de conexões ocupadas permanece estável.

4. Controlar o Timeout das requisições

Timeout define quanto o Apache pode aguardar em determinadas operações. Reduzi-lo sem entender a aplicação pode interromper uploads ou respostas demoradas; mantê-lo alto demais pode prolongar requisições presas.

Timeout 60
Output esperado após executar apachectl configtest:
Syntax OK

Teste rotas de checkout, cálculo de frete e retorno do pagamento antes de aplicar em produção. Se uma integração externa ultrapassa frequentemente o limite, investigue a integração em vez de aumentar o tempo indefinidamente. Depois das duas alterações, valide e recarregue:

sudo apachectl configtest
sudo systemctl reload apache2
sudo systemctl is-active apache2
Output esperado:
Syntax OK
active

Ativar compressão e cache de arquivos estáticos

A compressão HTTP reduz o volume transferido em respostas textuais, enquanto o cache no navegador evita downloads repetidos de arquivos estáticos. Imagens já comprimidas não devem receber a mesma regra aplicada a HTML, CSS, JavaScript ou JSON.

5. Comprimir conteúdo textual com mod_deflate

sudo a2enmod deflate filter
sudo apachectl configtest
sudo systemctl reload apache2
Output esperado:
Enabling module deflate.
Module filter already enabled ou confirmação de ativação.
Syntax OK
Reload concluído sem erro

No VirtualHost de seudominio.com.br, limite a compressão aos tipos adequados:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/css
    AddOutputFilterByType DEFLATE application/javascript application/json
    AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
Output esperado após validação:
Syntax OK

6. Definir expiração para CSS, JavaScript e imagens

sudo a2enmod expires headers
sudo apachectl configtest
sudo systemctl reload apache2
Output esperado:
Enabling module expires.
Enabling module headers.
Syntax OK
Reload concluído sem erro

Configure cache longo somente para arquivos versionados por nome ou parâmetro, evitando que o cliente mantenha cardápio ou preço antigo:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "access plus 7 days"
    ExpiresByType application/javascript "access plus 7 days"
    ExpiresByType image/jpeg "access plus 30 days"
    ExpiresByType image/png "access plus 30 days"
    ExpiresByType image/webp "access plus 30 days"
</IfModule>

<FilesMatch "\.(css|js|jpg|jpeg|png|webp)$">
    Header append Cache-Control "public"
</FilesMatch>
Output esperado após validação:
Syntax OK

Não aplique cache público às páginas de carrinho, sessão, checkout ou confirmação. Se o VirtualHost também redirecionar HTTP para HTTPS, mantenha a regra separada e valide o fluxo conforme Como redirecionar um site http para https?.

Monitorar o pico e validar o sétimo ajuste

O monitoramento do Apache em pico transforma a otimização em processo verificável. Sem observar CPU, memória, conexões, respostas HTTP e logs, aumentar limites pode apenas adiar a falha ou transferir o gargalo para a aplicação.

7. Habilitar status local e acompanhar recursos

Ative o módulo de status e restrinja a página ao acesso local. Não publique informações operacionais para toda a internet.

sudo a2enmod status
sudo apachectl configtest
sudo systemctl reload apache2
Output esperado:
Enabling module status.
Syntax OK
Reload concluído sem erro

Adicione a restrição à configuração apropriada:

<Location "/server-status">
    SetHandler server-status
    Require local
</Location>
ExtendedStatus On
Output esperado após validação:
Syntax OK

Consulte localmente e acompanhe o log durante a simulação:

curl -s http://127.0.0.1/server-status?auto
sudo journalctl -u apache2 -f
Output esperado:
ServerVersion: Apache
ServerMPM: event
BusyWorkers: valor observado
IdleWorkers: valor observado
Fluxo de logs do serviço sem falhas de configuração

Simule apenas endpoints seguros em um ambiente de teste. Não envie pedidos, pagamentos ou notificações reais. A configuração é aceitável quando o servidor mantém recursos disponíveis, não acumula erros e conserva tempos de resposta compatíveis com a operação observada.

Problemas comuns e como resolver

O diagnóstico de lentidão no Apache deve relacionar o sintoma à mudança mais recente. Use o backup, os logs e a validação de sintaxe para evitar tentativas aleatórias.

Sintoma: Apache não recarrega após a alteração

Causa: diretiva inválida, módulo ausente ou bloco inserido no arquivo incorreto.

Solução: execute sudo apachectl configtest, corrija o arquivo e só então faça o reload. Se necessário, reverta a última alteração pela cópia funcional.

Sintoma: memória se esgota durante muitos pedidos

Causa: MaxRequestWorkers acima da capacidade, processos da aplicação consumindo memória ou outro serviço concorrendo pelos mesmos recursos.

Solução: reduza o limite gradualmente, meça RSS, CPU e paginação e identifique se o consumo pertence ao Apache ou à aplicação. Não aumente o limite antes de confirmar memória disponível.

Sintoma: clientes recebem respostas interrompidas

Causa: Timeout agressivo, aplicação lenta ou integração externa demorando mais que o esperado.

Solução: relacione o horário do erro aos logs, teste cada rota e restaure temporariamente o valor anterior. Corrija a dependência lenta antes de elevar limites de forma permanente.

Sintoma: cardápio ou preço antigo aparece no navegador

Causa: regra de cache aplicada a conteúdo dinâmico ou arquivos estáticos sem versionamento.

Solução: remova cache público de carrinho, checkout e respostas personalizadas. Versione CSS, JavaScript e imagens quando o conteúdo mudar.

Perguntas frequentes sobre ajustes no Apache para hamburguerias

Quais ajustes no Apache ajudam durante picos de pedidos?

Os principais ajustes envolvem MPM, quantidade de processos e threads, KeepAlive, tempo limite, compressão, cache e monitoramento. Os valores devem ser definidos conforme a memória disponível, o perfil da aplicação e a concorrência observada no horário de pico.

Como saber se o Apache suporta o pico de pedidos da hamburgueria?

Monitore processos, memória, CPU, conexões simultâneas, tempo de resposta e erros enquanto simula acessos concorrentes em um ambiente controlado. A capacidade adequada é confirmada quando o servidor mantém estabilidade sem esgotar recursos ou acumular requisições.

O KeepAlive deve ficar ativado em um site de pedidos online?

O KeepAlive pode reduzir a abertura repetida de conexões durante o carregamento das páginas, mas mantém conexões ocupadas por algum tempo. Deve ser ativado com tempo limite controlado e validado conforme o volume de acessos e os recursos do servidor.

É necessário reiniciar o Apache depois de cada ajuste?

Primeiro valide a sintaxe da configuração para evitar indisponibilidade causada por diretivas inválidas. Quando a alteração exigir aplicação imediata, prefira um reload controlado e confirme em seguida o status do serviço e os logs.

Como evitar que a otimização do Apache derrube o sistema de pedidos?

Faça backup dos arquivos de configuração, altere uma variável por vez e teste fora do horário de maior movimento. Mantenha uma cópia funcional para reversão e acompanhe logs, consumo de recursos e respostas HTTP após cada mudança.

Conclusão

O ajuste de performance para pedidos online é eficaz quando concorrência, conexões e entrega de arquivos são configuradas com base em medições. Uma hamburgueria deve preservar margem para a aplicação e validar todo o fluxo antes do próximo pico.

  • Salve a linha de base e uma cópia funcional da configuração.
  • Aplique um dos sete ajustes por vez, valide a sintaxe e use reload controlado.
  • Teste cardápio, carrinho e checkout enquanto acompanha recursos e logs.

Leia também

Precisa de ajuda com otimização do Apache?

Uma infraestrutura com recursos adequados facilita testar concorrência, acompanhar consumo e ampliar capacidade conforme a demanda do sistema de pedidos.

Conheça as opções de Servidor VPS


Esta resposta foi útil?