最好的办法删除旧日志没有阻止CPU

我有3个AWS EC2机器,使用每个500G的EBS存储。 在他们身上,我有SolrCloudsearch引擎在Jetty上运行,并提供大量的查询。 docker日志已经形成了巨大的,高达200G的大小。 我想删除,但不放弃我的solr系统的可用性。 如果我做rm -rf logfile那么CPU等待高达99%,并且该机器上的节点不再响应,直到负载减less。

有没有办法删除这些日志文件没有这个巨大的负载增加? 谢谢

后来编辑:所以,我已经find了清空大文件的在线方式,但没有比较,所以我不知道哪个满足我的问题。 他们每个人的利弊?

 1.> largefile.txt 2. truncate -s 0 {filename.txt} 3. logrotate 4. cat /dev/null > largefile.txt 

您可以尝试限制rm进程可以使用的CPU数量。 运行需要更长的时间,但不会让系统瘫痪。 这里有一篇文章谈论使用一个叫做cpulimit的程序。

问题可能不是CPU,而是IOLOAD。

前段时间,我遇到了几个大于20GB大小的Logfiles的问题。

基本上我做了什么来减less删除的影响:

 nice -n19 ionice -c3 rm LOGFILE 

然而,ionice可能无法正常工作,您的硬件设置和/或io调度程序设置。

根据Stu Thompson的说法,您可能需要使用CFG调度程序来执行一个有效的ionice命令。

ionice不能为你工作可能是因为你正在运行不正确的调度程序。 它显然只适用于CFQ调度程序。 – 史蒂夫汤普森10月31 '11在12:28

请参阅ionice CFG调度程序问题