上一篇:错误的日期格式可能导致走nginx proxy cache时不能进行304响应

下一篇:使用httpclient必须知道的参数设置及代码写法及存在的风险

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

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

通过free -m命令

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

那内存去哪了?

通过查阅资料会发现cat /proc/meminfo

Slab: 22464312 kB
SReclaimable: 16474128 kB  //这些是内核保持的但是可以释放的inode和dentry的缓存
SUnreclaim: 5990184 kB

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

某机房机器系统版本: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 (不释放)

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

sysctl -w vm.extra_free_kbytes=6436787
sysctl -w vm.vfs_cache_pressure=10000

上一篇:错误的日期格式可能导致走nginx proxy cache时不能进行304响应

下一篇:使用httpclient必须知道的参数设置及代码写法及存在的风险