我们有一个非常大的(多GB)Nginx缓存目录用于繁忙的站点,我们偶尔需要一次清除所有目录.我在过去通过将缓存文件夹移动到新路径,在旧路径上创建新缓存文件夹,然后rm -rfing旧缓存文件夹来解决这个问题.
然而,最近,当我需要在忙碌的早晨清除缓存时,来自rm -rf的I / O正在使我的服务器磁盘访问进程挨饿,因为Nginx和它前面的服务器都是读取密集型的.我可以在CPU处于空闲状态时观察负载平均爬升,并且rm -rf占用iotop中98-99%的磁盘IO.
我在调用rm时尝试过ionice -c 3,但它似乎对观察到的行为没有明显的影响.
有没有办法驯服rm -rf以更多地共享磁盘?我是否需要使用其他技术来从ionice中获取线索?
更新:
有问题的文件系统是AWS EC2实例存储(主磁盘是EBS). / etc / fstab条目如下所示:
/dev/xvdb /mnt auto defaults,nobootwait,comment=cloudconfig 0 2
解决方法
All data gathered from this page.以下是删除大型文件目录的一些选项.查看有关如何生成详细信息的文章.
Command Elapsed System Time %CPU cs1* (Vol/Invol) rsync -a –delete empty/ a 10.60 1.31 95% 106/22 find b/ -type f -delete 28.51 14.46 52% 14849/11 find c/ -type f | xargs -L 100 rm 41.69 20.60 54% 37048/15074 find d/ -type f | xargs -L 100 -P 100 rm 34.32 27.82 89% 929897/21720 rm -rf f 31.29 14.80 47% 15134/11
* cs1是自愿和非自愿的上下文切换
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。