前面都是我的牢骚,想看正文的请走传送门
起因
今天跑了一下 WordPress 的站点健康,发现有个名叫 fileinfo 的 extension 没启用。我去宝塔面板里面装上了 fileinfo 之后发现它(站点健康)还是提示没有安装 fileinfo ,去宝塔论坛也没查到什么有用的消息,就去 bing 上搜。发现有的文章说是内存不够,调一下 swap ,即 Linux 下的虚拟内存。
不调不知道,一调吓一跳,原本物理内存 40% 的占用一下子飙升到了 80% 左右。于是就有了本文。
方案
切记缓存不要随意清空,清空 cache 命令最好在低负载时使用,不然可能会导致系统运行出问题!
释放内存的时候,首先进入 root 执行命令 sync
将所有正在内存中的缓冲区写到磁盘中,其中包括已经修改的文件 inode、已延迟的块 I/O 以及读写映射文件,从而确保文件系统的完整性。sync
命令可以多执行几遍。
root@VM-8-5-ubuntu:/# sync
然后修改 drop_caches 文件:
root@VM-8-5-ubuntu:/# echo 3 > /proc/sys/vm/drop_caches
drop_caches 的值可以是 0-3 之间的数字,代表不同的含义:
- 0:不释放(系统默认值);默认情况下表示不释放内存,由操作系统自动管理;
- 1:释放页缓存;To free pagecache.
- 2:释放dentries和inodes;To free dentries and inodes.
- 3:释放所有缓存;To free pagecache, dentries and inodes.
建议释放完之后改回 0,交给操作系统管理。上面是临时释放缓存的方法,要想永久释放缓存,需要在 /etc/sysctl.conf 文件中配置如下,然后 sysctl -p
生效即可。
vm.drop_caches=1/2/3
注:在 2.6.x 系列的内核中可以设置为 0,3 系列的内核中设置为 0 就会报错,write error: Invalid argument
。只能重启服务器恢复。
发表回复
要发表评论,您必须先登录。