sexta-feira, 11 de outubro de 2013

Dicas de Performance no Apache

Até agora, na nossa série de postagens sobre o servidor Apache, ensinamos:

Agora vamos ensinar algumas configurações extras para melhorar segurança e performance do servidor, para que este responda aos usuários de forma mais rápida. Essas configurações incluem, esconder a versão do servidor utilizado, retirar cabeçalhos inúteis no response de imagens, habilitar múltiplas requisições por conexão e esconder a assinatura do servidor apache.

Índice

  • Escondendo a versão do apache utilizada
  • Habilitando uma conexão para várias requisições
  • Ativar / Desativar Assinatura do servidor
  • Configurando
  • Conclusão

Escondendo a versão do apache utilizada

Em cada requisição feita ao Apache (Request), é enviada uma resposta (Response) com os cabeçalhos necessários. No entanto, o Apache envia por padrão o seu nome, versão e alguns módulos instalados em todas as requisições, como pode ser visto na figura 1 abaixo.

apache-windows-servertoken-nao-especificado
Figura 1 - Diretiva ServerTokens padrão do apache

Note que em Server, circulado de vermelho, é passado a configuração completa do servidor, pois informa à qualquer um a versão do Apache, PHP, Sistema Operacional e etc. Alterando o valor da diretiva "ServerTokens" para "ProductOnly",as novas requisições ficarão conforme figura 2 abaixo.

apache-windows-servertoken-product-only
Figura 2 - Diretiva ServerTokens habilitada e com o valor "ProductOnly"

Com isso as informações descessárias ao response são removidas tornando-o menor e evitando falhas de segurança.

Habilitando uma conexão para várias requisições (KeepAlive)

O KeepAlive é uma configuração do Apache que permite conexões persistentes para um usuário, ou seja, permite que o servidor utilize a mesma conexão para transferir múltiplos arquivos ao cliente. Quando um usuário acessa um site, são feitas várias conexões TCP para os diversos arquivos a serem baixados. Com o KeepAlive, o cliente executa apenas uma conexão TCP, e esta fica aberta por um determinado tempo (configurável no Apache em KeepAlive Timeout). Isso aumenta a velocidade de carregamento do site e a velocidade do servidor (reduzindo o número de conexões, o Server Load também é reduzido). Porém, o KeepAlive causa um aumento de memória, pois as conexões ficam abertas (geralmente por alguns segundos ou quando atingir o número máximo de requisições, configurando em Max KeepAlive Requests) esperando o uso do cliente. Portanto, se o Servidor tiver uma boa quantidade de Memória RAM, ative o KeepAlive.

Traduzindo...

Vantagens

  • Aumenta velocidade do website: Reduz a latência associada com a transferência HTTP
  • Reduz uso da CPU: Ativar o KeepAlive reduz o uso de CPU. Considere que um website com várias imagens, arquivos e etc, o servidor precisará fazer uma conexão para cada arquivo, aumentando o uso de CPU. Com o KeepAlive ativado somente uma conexão é feitaOn the server side enabling KeepAlive reduces CPU usage.

Desvantagens

  • Aumenta o uso de memória: Ativar o KeepAlive aumenta o uso de memória no servidor. Processos do Apache tem que manter conexões abertas à espera de novos pedidos de conexões estabelecidas.

Quando usar: Dependerá de várias situações como quantidade de recursos de seu servidor, tipo de website e etc. Um servidor com pouca Ram recomenda-se utilizar o KeepAlive Off, reduzindo assim o uso de memória e dando possibilidade ao servidor antender mais usuários. Se você se preocupa muito com a experiência do usuário com o website e seu servidor dispõe de uma boa quantidade de recursos (Memória Ram, CPU), se seu website tem muitas imagens ou outros arquivos, é recomendado manter o KeepAlive ativado.

Ativar / Desativar Assinatura do servidor

Há muitos posts na internet falando sobre a diretiva "ServerSignature, mas quase nenhum de fato explica o que ela é. Pois bem, a diretiva ServerSignature é permite a configuração de uma trilha no rodapé de documentos gerados pelo próprio servidor, como mensagens de erro http, mod_proxy, ftp, listagem de diretórios entre outros documentos. A rasão pela qual alguém pode querer esta diretiva habilitada pode ser por exemplo alguém que use um servidor junto com uma cadeia de proxies, para permitir que caso o servidor fosse o culpado pelo erro, esta informação esteja explícita no documento.

Nas versões atuais do apache, o padrão já é esta diretiva vir com valor off, não precisando especificar tal valor. Após a versão 2.0.44, os detalhes do servidor que aparecem na assinatura, são especificados pela diretiva ServerTokens, explicada logo acima.

Nas figuras 3 e 4 abaixo, podemos verificar a diferença no comportamento do servidor.

apache-windows-serversignature-nao-especificado
Figura 3 - Diretiva ServerSignature desativada, como padrão do Apache

apache-windows-serversignature-habilitado
Figura 4 - Diretiva ServerSignature habilitada

Configurando

A configuração exibida abaixo serve apenas para desativar a diretiva ServerTokens e deve ser feita no arquivo "httpd.conf".

 
ServerTokens ProductOnly

A configuração exibida abaixo serve apenas para habilitar e configurar a diretiva KeepAlive e deve ser feita no arquivo "httpd.conf" ou no arquivo "httpd-vhosts.conf", isso vai depender da sua configuração.

 
KeepAlive On
KeepAliveTimeout 10
MaxKeepAliveRequests 100

Conclusão

Neste post foi ensinado um pouco mais sobre algumas diretivas simples do apache, mas que podem aumentar a segurança e a performance do seu servidor. Espero que tenham gostado do post.

Nenhum comentário:

Postar um comentário