一般在小内存的机器上会遇到这样的问题,这里附上解决办法
先看一下系统设置
$ cat /proc/sys/vm/zone_reclaim_mode 0 $ cat /proc/sys/vm/min_free_kbytes 1433
解决办法:
$ sysctl -w vm.zone_reclaim_mode=1 #当区域内存不足时允许使用内存回收,此项默认被禁用,因为对服务器来说,Cache非常重要 $ sysctl -w vm.min_free_kbytes=2048 #告诉内核随时保持2M的内存空闲 #当可用内存低于这个参数时, 系统开始回收Cache内存, 以释放内存, 直到可用内存大于这个值 #值越高, 内核越早开始回收内存, 空闲内存越高 #设定这个参数时请小心, 因为该值过低和过高都有问题 #太低可防止系统重新利用内存, 这可导致系统挂起并让 OOM 杀死多个进程 #将这个参数值设定太高(占系统总内存的 5-10%)会让您的系统很快会内存不足 #Linux 的设计是使用所有可用 RAM 缓存文件系统Cache. 该值设定太高的结果是在该系统中花费太多时间重新利用内存 #默认值: * 16MB: 512k * 32MB: 724k * 64MB: 1024k * 128MB: 1448k * 256MB: 2048k * 512MB: 2896k * 1024MB: 4096k * 2048MB: 5792k * 4096MB: 8192k * 8192MB: 11584k * 16384MB: 16384k $ echo 'vm.zone_reclaim_mode = 1' >> /etc/sysctl.conf $ echo 'vm.min_free_kbytes = 2048' >> /etc/sysctl.conf
然后可以确认一下
cat /proc/sys/vm/zone_reclaim_mode 1 cat /proc/sys/vm/min_free_kbytes 2048