Por que é necessário 33s para “head -1” um arquivo de log de 250MB, mas “tail-1” é instantâneo?

0

Estou tentando entender um comportamento estranho no meu servidor. Compartilhamos um volume btrfs sobre o NFSv4 para os servidores de aplicativos. Um dos aplicativos usará um arquivo de log nesse volume exportado. O logrotate irá rodá-lo usando o copytruncate, pois o arquivo permanece aberto no aplicativo.

Os comandos "head" e "tail" foram executados no servidor NFS que tem o disco anexado (todos os servidores estão no Google Cloud Platform, mesma região). "du" especifica que o arquivo tem cerca de 250MB.

O truncamento deve ser evitado nos volumes btrfs? O que explicaria esse comportamento estranho?

    
por rosenfeld 22.11.2016 / 11:57

1 resposta

0

Eu descobri que a saída da primeira linha era realmente o problema:

head -1 file.log | wc -c

43297796

A primeira linha foi longa e binária por algum motivo.

time head -1 file.log > /dev/null

na verdade retornou em 0.035s. Eu não sei o que fez com que essa linha se tornasse uma binária, mas depois de descobrir isso, o mistério foi resolvido.

    
por 22.11.2016 / 12:46