Por Que Reiniciamos os Servidores
Uma pergunta que surge de forma bastante regular é se os servidores devem ou não ser reiniciados rotineiramente, como uma vez por semana, ou se devem ser deixados em execução pelo maior tempo possível para alcançar o máximo de “uptime” (tempo de atividade). Para mim, a resposta é simples – com raras exceções, reinicializações regulares são a escolha mais apropriada para servidores.
Como acontece com qualquer regra, há casos em que ela não se aplica. Por exemplo, algumas empresas que executam sistemas críticos não têm nenhuma margem para tempo de inatividade e precisam estar disponíveis 24 horas por dia, 7 dias por semana. Obviamente, sistemas como esse não podem simplesmente ser reiniciados de forma rotineira. No entanto, se um sistema é tão crítico que nunca pode ficar fora do ar, então essa situação deveria acionar um sinal de alerta de que esse sistema é um ponto de falha e talvez devesse ser iniciada uma reflexão sobre como lidar com o tempo de inatividade, seja planejado ou não planejado.
Outra exceção é que alguns sistemas AIX precisam de um tempo de atividade significativo, superior a algumas semanas, para obter a máxima eficiência, já que o sistema é autoajustável e precisa de tempo para obter informações de uso e ajustar-se de acordo. Isso tende a se limitar a grandes servidores de banco de dados que raramente mudam e a cenários de uso semelhantes que são menos comuns do que em outras plataformas.
Em TI, frequentemente idolatramos o conceito de “uptime” – por quanto tempo um sistema consegue funcionar sem precisar reiniciar. Mas “uptime” não é um conceito que traga valor ao negócio, e a TI precisa manter as necessidades do negócio em mente o tempo todo, em vez de se concentrar em métricas artificiais. O negócio não está preocupado com por quanto tempo um servidor conseguiu permanecer online sem reiniciar – ele só se importa que o servidor esteja disponível e pronto quando necessário para o processamento do negócio. Esses são conceitos muito diferentes.
Para praticamente qualquer servidor de negócios comum, há uma janela em que o servidor precisa estar disponível para fins de negócio e uma janela em que ele não é necessário. Essas janelas podem ser diárias, semanais ou mensais, mas é raro o servidor que está de fato em uso 24 horas por dia, sem exceção.
Frequentemente ouço pessoas afirmarem que, por executarem o sistema operacional X em vez do Y, elas não precisam mais reiniciar, mas isso simplesmente não é verdade. Há duas razões principais para reiniciar de forma regular: verificar a capacidade do servidor de reiniciar com sucesso e aplicar atualizações que não podem ser aplicadas sem reiniciar.
Aplicar atualizações é o motivo pelo qual a maioria das empresas reinicia. Quase todos os sistemas operacionais recebem atualizações regulares que exigem uma reinicialização para entrarem em vigor. Como a maioria das atualizações é lançada para fins de segurança e estabilidade, especialmente aquelas que exigem uma reinicialização, a importância de aplicá-las é bastante alta. Tornar um servidor desnecessariamente vulnerável apenas para manter o tempo de atividade não é sensato.
Testar a capacidade de um servidor de reiniciar com sucesso é o que frequentemente passa despercebido. A maioria dos servidores tem alterações aplicadas a eles de forma regular. As alterações podem ser atualizações, novos aplicativos, mudanças de configuração, atualizações ou similares. Qualquer alteração introduz risco. Só porque um servidor está saudável imediatamente após uma alteração ser aplicada não significa que o servidor, nem os aplicativos em execução nele, vão iniciar conforme o esperado em uma reinicialização.
Se o servidor nunca é reiniciado, então nunca sabemos se ele consegue reiniciar com sucesso. Com o tempo, o número de alterações aplicadas desde a última reinicialização aumentará. Isso é muito perigoso. O que tememos é que um grande número de alterações tenha sido feito, possivelmente muitas delas não documentadas, e que uma reinicialização então falhe. Nesse ponto, identificar qual alteração está fazendo o sistema falhar poderia ser um processo intransponível. Nenhuma alteração isolada para reverter, nenhum caminho conhecido para a recuperabilidade. É quando o pânico se instala. Claro, uma máquina que nunca é reiniciada intencionalmente tem mais probabilidade de reiniciar não intencionalmente – o que significa que a chance de uma reinicialização falha é ao mesmo tempo mais provável de ocorrer e mais provável de ocorrer enquanto está em uso ativo.
Embora as reinicializações regulares não tenham a intenção de reduzir a frequência de reinicializações falhas – na verdade, elas aumentam a ocorrência de falhas – o propósito é tornar essas falhas facilmente gerenciáveis do ponto de vista de uma “alteração conhecida” e, mais importante, controlar quando essas reinicializações ocorrem, para garantir que aconteçam em um momento em que o servidor esteja designado como disponível para manutenção e seja projetado para ser exigido, de modo que os problemas sejam encontrados em um momento em que possam ser mitigados sem impacto ao negócio.
Já ouvi muitos administradores de sistemas afirmarem que evitam reinicializações de fim de semana porque não querem ficar presos trabalhando aos domingos por conta de servidores que falham em voltar a funcionar após uma reinicialização. Eu mesmo já fui acionado em muitas manhãs de domingo por uma reinicialização falha, mas toda vez que recebo essa ligação sinto uma sensação de alívio. Sei que acabamos de pegar um problema em um momento em que o negócio não é impactado financeiramente. Se aquele servidor não tivesse sido reiniciado durante o horário de folga, poderia não ter sido descoberto como “impossível de inicializar” até que tivesse falhado durante o horário ativo de negócio e causado uma perda de receita.
Graças às reinicializações regulares de fim de semana, podemos pegar desastres iminentes com segurança e, graças a sabermos que temos apenas uma semana de alterações para investigar, somos rotineiramente capazes de corrigir os problemas geralmente com pouco esforço e com grande confiança de que entendemos quais alterações haviam sido feitas antes da falha.
As reinicializações regulares têm a ver com proteger o negócio de interrupções e tempo de inatividade que podem ser mitigados por meio de processos muito simples e confiáveis.

