throttle cpu usage para um cronjob

1

Eu tenho um cronjob que é basicamente nada mais que mysqldump whatever | gzip > backup.sql.gz . O banco de dados é razoavelmente grande. Eu notei que, enquanto o trabalho está em execução, meu apache é muito menos responsivo, o uso da CPU é assim

 %CPU  COMMAND 
 15.1  gzip               
 14.1  mysqld             
 13.1  mysqldump 

Existe uma maneira de fazer esse trabalho usar menos CPU, talvez ao preço de levar mais tempo?

    
por georg 20.12.2011 / 13:41

3 respostas

3
 ionice -c 3 nice mysqldump whatever | ionice -c 3 nice gzip > backup.sql.gz
    
por 20.12.2011 / 13:45
2

Você pode usar agradável e renice para mudar a prioridade dos processos. Isso significa que eles terão menos acesso à CPU.

Você provavelmente não desejará renegar o mysqld, mas o mysqldump e o gzip podem ter suas prioridades alteradas com segurança.

Se você tiver problemas com o uso excessivo de disco, use ionice .

    
por 20.12.2011 / 13:56
2

Se o seu aplicativo da Web estiver gravando no banco de dados 'whatever', ele deverá aguardar a conclusão do mysqldump, porque ele bloqueia as tabelas por padrão. Se este for o caso e você diminuir a prioridade, você vai piorar o problema.

Faça o dump do banco de dados primeiro como texto simples e, em seguida, execute gzip para compactar o arquivo. Dessa forma, o mysqldump pode ser concluído mais cedo e liberar o bloqueio, e o MySQL e o Apache podem fazer seus negócios enquanto o gzip é executado.

    
por 20.12.2011 / 16:17