Melhor maneira de remover o log antigo sem bloquear o cpu

1

Eu tenho 3 máquinas do AWS EC2, usando cada 500G de armazenamento do EBS. Neles eu tenho o motor de busca SolrCloud em execução no Jetty e atendendo muitas consultas. Com o tempo, as toras do píer têm um tamanho enorme, até ~ 200G. Eu gostaria de remover isso, mas sem abrir mão da disponibilidade do meu sistema solr. Se eu fizer rm -rf logfile , a CPU espera até 99% e os nós nessas máquinas não estão mais respondendo, até que a carga diminua.

Existe uma maneira de remover esses arquivos de log sem esse aumento enorme de carga? Obrigado

Edição posterior: Então, eu encontrei on-line 4 maneiras de esvaziar arquivos grandes, mas não há comparação entre eles, então não tenho certeza do que satisfaz meu problema. Prós e contras de cada um deles?

1.> largefile.txt
2. truncate -s 0 {filename.txt}
3. logrotate
4. cat /dev/null > largefile.txt
    
por maephisto 07.01.2014 / 14:47

2 respostas

1

Você pode tentar limitar a quantidade de CPU que o processo de rm pode usar. Levará mais tempo para ser executado, mas não afetará seu sistema. Aqui é um artigo falando sobre isso usando um programa chamado cpulimit.

    
por 07.01.2014 / 14:50
1

o problema pode nem ser a CPU, mas o IOLOAD.

eu tive o problema com alguns > Arquivos de log de 20 GB de tamanho há algum tempo.

basicamente o que fiz para reduzir o impacto da remoção:

nice -n19 ionice -c3 rm LOGFILE
No entanto, o

ionice pode não funcionar corretamente na configuração do seu hardware e / ou nas configurações do programador io.

De acordo com Stu Thompson, você pode precisar do agendador CFG para um comando ionizado em funcionamento.

ionice not working for you may have been because you were running with the incorrect scheduler. It apparently only works with the CFQ scheduler. – Stu Thompson Oct 31 '11 at 12:28

Veja isso para o problema do agendador de CFG de ionização

    
por 07.01.2014 / 15:33