Quando percebemos lentidão em nosso servidor, podemos pensar: Preciso melhorar o hardware! Normalmente achamos que upgrade de hardware é a melhor ou única maneira de acelerar um servidor. Parece óbvio que mais CPU e memória oferecerá um melhor desempenho, certo? Mas, se os serviços não forem otimizados, o upgrade será apenas uma correção temporária e onerosa.
Uso de Recursos
São diversos os fatores que podem contribuir com o uso de recursos em excesso. Você pode estar com aplicações web mal codificadas ou até mesmo vulneráveis e, dessa forma, pode estar sendo alvo de ataques persistentes.
Em alguns casos pode ser necessário um estudo de código e de arquitetura do banco de dados para apontar com mais exatidão o alvo do problema e providenciar a otimização de acordo. Existem muitos tipos de gargalos que podem acontecer devido a um código não otimizado ou banco de dados mal arquitetado: RAM, CPU, IO, Rede, limites de software, etc.
Se tudo estiver otimizado e nada mais puder ser feito a nível de código/aplicação, você não deve esquecer que, assim como o código, algumas técnicas podem ser utilizadas antes de fazer um upgrade de hardware.
3 aliados para otimizar eu servidor linux
Há ferramentas gratuitas disponíveis que, em termos gerais, auxiliam a melhorar a performance do servidor como um todo e são fortes aliados na otimização.
BÔNUS: Otimizações Adicionais no apache(requer conhecimento avançado)
O arquivo de configuração do apache normalmente está localizado em “/usr/local/apache/conf/httpd.conf” e é possível fazer alterações pelo painel WHM. Se você não tiver experiência em servidores linux, poderá encontrar dificuldades em realizar alterações nos arquivos de configuração. Para que as alterações tenham efeito você deverá reiniciar o serviço (/etc/init.d/httpd restart). As diretivas principais a serem alteradas, citamos a seguir:
Timeout
A diretiva “Timeout” é usada para definir a quantidade de tempo que o apache irá esperar por uma requisição GET, POST (por exemplo), nas transmissões antes de desligar automaticamente. O valor entre 200 e 300 é aceitável, mas você pode ir ajustando de acordo com sua necessidade.
KeepAlive
Esta diretiva se definido como “on”, permite conexões persistentes ao apache. Para um melhor desempenho, é recomendado definir esta opção como “on” e permitir que mais de uma solicitação por conexão.
MaxKeepAliveRequests
Esta diretiva é usada para definir o número de solicitações permitido por conexão quando a opção KeepAlive acima é definido como “on”. Quando o valor dessa opção é definida como “0” requisições para o servidor são ilimitadas.
KeepAliveTimeout
Esta diretiva é usada para definir quanto tempo, em segundos, o apache irá esperar por um posterior pedido antes de fechar a conexão. O valor “10” é uma boa média a ser utilizada.
MaxClients
A diretiva “MaxClients” é usada para definir o limite no número de processos filho que serão criados para atender as solicitações. O padrão significa que até 512 solicitações HTTP podem ser tratadas simultaneamente. Este é um parâmetro de ajuste importantes sobre o desempenho do apache. Para a operação de carga elevada, um valor de “512” é recomendado. Para uso normal, você pode definir o valor de “256”.
ServerLimit
Esta diretiva “ServerLimit” é usada para definir o valor máximo configurado para a diretiva “MaxClients” para o tempo de vida do processo Apache. É importante notar que qualquer tentativa de alterar esta directiva durante um reinício será ignorado, mas o “MaxClients” pode ser alterada durante a reinicialização do servidor.
MinSpareServers e MaxSpareServer
MinSpareServers: Esta diretiva “MinSpareServers” é usado para definir o número mínimo de processos do servidor criança ociosos que devem ser criados. Um processo ocioso é aquele que não está a lidar com um pedido. Se houver menos do que “MinSpareServers” idle, em seguida, o processo pai cria novas crianças a uma taxa máxima de 1 por segundo. O valor a ser usado pode ser entre 5 ou 10.
MaxSpareServer: A presente diretiva “MaxSpareServers” é usado para definir o número máximo de processos do servidor criança ociosos que devem ser criados. Se houver mais do que “MaxSpareServers” processos filhos ociosos, em seguida, o processo pai vai matar os processos em excesso e esses processos extra será encerrado.
MaxRequestsPerChild
Esta opção “MaxRequestsPerChild” é usado para definir o número de pedidos que um processo servidor criança individual irá lidar. Este valor pode ser definido como “0” para obter o máximo desempenho e escalabilidade para o servidor.
Conclusão
Não necessariamente você precisa optar por um upgrade de hardware quando identificar um baixo desempenho no seu servidor. Talvez o mesmo não esteja otimizado da maneira correta a fim de atender a sua necessidade e de seus clientes. Considere os pontos levantados neste artigo antes de dar um próximo passo e conte com nosso suporte caso tenha qualquer dúvida ou questionamento.