Utilizar computadores Apple Mac como servidores é uma ideia inovadora. Apesar de suas raízes Unix, o macOS não foi projetado para operar corretamente sem supervisão, e configurá-lo e utilizá-lo nesse modo seria difícil. Isso é especialmente verdadeiro considerando que ele não conseguiu processar corretamente a atividade de rede por mais de 49 dias, 17 horas, 2 minutos e 47 segundos.

Engenheiros da Photon descobriram um bug no macOS da Apple, que opera uma frota de computadores Mac usados ​​para monitorar os serviços do iMessage. Em determinado momento, esses computadores param de responder às conexões de rede, embora processem pings corretamente. Curiosamente, eles continuam a manter as conexões de rede existentes, o que complica ainda mais o diagnóstico. Tradicionalmente, uma reinicialização resolve o problema, mas isso não ajuda a determinar a causa.

Especialistas da Photon observaram que o problema se manifesta após 49,7 dias de operação contínua da rede nos computadores Apple e criaram vários scripts para testar sua teoria. Acontece que o culpado era o contador de sistema “tcp_now”, cuja função é rastrear o tempo atual em milissegundos desde a inicialização da pilha TCP. Os valores de “tcp_now” são representados como um inteiro de 32 bits, com um valor máximo de 4.294.967.295 (2³² – 1), após o qual são zerados. Em milissegundos, isso equivale exatamente a 49,7 dias.

De acordo com os padrões, os sistemas operacionais encerram rapidamente as conexões TCP abertas; no macOS, esse período é de 30 segundos. Quando o valor de “tcp_now” se aproxima ou atinge o limite, o status de expiração da conexão é calculado.Em relação a esse parâmetro, o resultado é um valor que excede um número natural de 32 bits. Quando uma verificação periódica é realizada para determinar se uma conexão fechada deve ser excluída, o sistema retorna uma resposta negativa devido a um erro matemático. A pilha TCP sofre um estouro devido à retenção errônea de portas temporárias e para de funcionar quando não há mais portas disponíveis. A velocidade desse processo depende do volume de atividade da rede, mas em qualquer servidor ou ambiente profissional, ele ocorre rapidamente.

Portanto, uma reinicialização resolve o problema. Essa questão é a origem de vários bugs conhecidos relatados pela comunidade de usuários de computadores Apple. Talvez soluções mais adequadas surjam em breve.

By admin

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *