linux cached过高导致性能变低
场景:
拿到了客户50个文件,平均每个文件大概40M左右的txt,文件在S3上,需要导入到数据库,40M解析出来大概是80W条左右的数据。
描述:
在刚开始执行导入时,因为数据验证复杂程度不同,每个文件耗时大概6到9分钟,执行到第20个文件之后,效率明显变低,执行到第
35个文件时free查看内存使用情况used已经到了15G(服务器内存16G),发现cached非常之高竟然有13G之多。
解决:
因为每个文件用过之后就不会再用,实际上缓存了文件对于目前的场景来说并没有什么实质性帮助,反而会极大幅度影响性能,所以手动
释放内存 echo 3 > /proc/sys/vm/drop_caches
drop_caches的值说明:
* 1 > To free dentries and inodes:
* 2 > To free pagecache, dentries and inodes:
* 3 > As this is a non-destructive operation, and dirty objects are notfreeable, the user should run "sync" first in order to make sure allcached objects are freed.
释放之后性能回复到初始的情况,导入性能问题解决。
释放之后的截图(没有时间重现释放之前的情况再截图了,不好意思):
如果大家有什么不解,或意见,欢迎在下方留言,楼主看到就会回复的,谢谢。
作者:一角01
出处:www.cnblogs.com/-renyu
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
本文如对您有帮助,还请多帮【推荐】下此文。