开启nginx cache后导致内存几乎100%问题


开启nginx cache后导致内存几乎100%问题_缓存

1、前些日子某服务被刷,每分钟达到上几百万请求;当时采用了nginx cache来解决的;但是因为某服务不能缓存太久,当时设置了5s,那么带来的问题就是产生大量小文件,而且很快就删除了。

开启nginx cache后导致内存几乎100%问题_缓存


开启nginx cache后导致内存几乎100%问题_缓存_03


2、通过free -m

开启nginx cache后导致内存几乎100%问题_linux_04

会发现used是27G;但是通过top查看进程占的内存并没有那么多

开启nginx cache后导致内存几乎100%问题_缓存_05


那内存去哪了?


开启nginx cache后导致内存几乎100%问题_linux_06


3、通过查阅资料会发现(cat /proc/meminfo)

Slab: 22464312 kB

SReclaimable: 16474128 kB (这些是内核保持的但是可以释放的inode和dentry的缓存)

SUnreclaim: 5990184 kB



4、这些内存为什么会不自动清理呢?

某机房机器系统版本:Linux  2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux(正常,没出现内存快到100%的情况)

某机房机器系统版本:Linux  2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux (不释放)


开启nginx cache后导致内存几乎100%问题_缓存_07开启nginx cache后导致内存几乎100%问题_系统版本_08

5、通过设置如下参数来设置内存阀值

sysctl -w vm.extra_free_kbytes=6436787

sysctl -w vm.vfs_cache_pressure=10000


开启nginx cache后导致内存几乎100%问题_linux_09



参考资料

http://blog.atime.me/research/linux-ate-my-memory.html

http://blog.yufeng.info/archives/2456 

http://events.linuxfoundation.org/sites/events/files/lcjp13_moriya.pdf

http://blog.longwin.com.tw/2010/10/linux-cached-memory-release-2010/

开启nginx cache后导致内存几乎100%问题_linux_10开启nginx cache后导致内存几乎100%问题_缓存_11开启nginx cache后导致内存几乎100%问题_系统版本_12



开启nginx cache后导致内存几乎100%问题_linux_13







开启nginx cache后导致内存几乎100%问题_系统版本_14


若有技术难题

可联系小编进技术交流群

若有生活难题

也可联系小编

我们可以从诗词歌赋聊到人生哲学

开启nginx cache后导致内存几乎100%问题_系统版本_15

开启nginx cache后导致内存几乎100%问题_系统版本_16


开启nginx cache后导致内存几乎100%问题_缓存_17