场景
某个项目,每天大概某点会报read timeout问题,该项目使用了缓存。
估计和内存回收会有一定关系,内存回收引起的缓存失效?
内存回收机制
如楼上所说,在linux系统的缺省配置中,内存足够的情况下,linux不回收buffer 和cache,但在2种情况下, 会使用LRU(least recently used 最近最少使用)算法进行页面的回收:
1、由后台运行的守护进程 kswapd周期性的检查,发现系统内空闲的物理页面数目少于特定的阈值时;
2、要为用户进程分配一大块内存,但系统中没有足够多的物理内存时,操作系统会启动内存回收。
查看内存限制设置
vim /etc/security/limits.conf,内容为:
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535