我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

因为访问量持续增长,苏南大叔的博客最近迁移到了新的服务器。刚刚装好系统环境后,看到宝塔面板显示可用内存的情况之后。瞬间就泪奔了,看着着还剩下的可用内存值...,真心是难以接受了,毕竟连常用软件软件,都还没有安装呢... 通过查看系统进程,发现真正占用内存的程序其实并没有几个,那么centos的内存都去哪里了呢?

苏南大叔:centos如何查看内存等资源使用情况?centos内存优化方案 - centos-memery
centos如何查看内存等资源使用情况?centos内存优化方案(图13-1)

本文讲述的内容是:centos如何查看内存等资源使用情况? centos内存优化方案是什么? 本文的测试环境为:centos7.4宝塔面板5.5.4,服务器内存4g

使用free -m查看内存使用

centoslinux)下,如何查看内存使用情况呢?我们可以使用下条命令来查看内存使用情况。

free -m

苏南大叔:centos如何查看内存等资源使用情况?centos内存优化方案 - 001
centos如何查看内存等资源使用情况?centos内存优化方案(图13-2)

但是直觉告诉我们,这个值是有问题的,因为确实可用内存太少了。

使用top查看cpu及内存使用情况

而苏南大叔使用top命令,查看程序所占用的内存值列表的时候。却没有看到那么大的内存占用值。

top

苏南大叔:centos如何查看内存等资源使用情况?centos内存优化方案 - 002
centos如何查看内存等资源使用情况?centos内存优化方案(图13-3)

在宝塔面板的首页,我们也看到了类似的结果返回图表。

苏南大叔:centos如何查看内存等资源使用情况?centos内存优化方案 - 000
centos如何查看内存等资源使用情况?centos内存优化方案(图13-4)

临时解决方案

本条内容说是临时方案,说的就是效果不是太好,但是也是有效果的。大家看看就ok,不推荐使用。本条目主要功效就是临时释放内存。操作的命令,在下面两组里面任选两组即可。

sync
echo 3 > /proc/sys/vm/drop_caches
sysctl -w vm.drop_caches=3

苏南大叔:centos如何查看内存等资源使用情况?centos内存优化方案 - 003
centos如何查看内存等资源使用情况?centos内存优化方案(图13-5)

我们可以通过下面的两组命令中的任意一组,来查看设置的效果。

sysctl -a | grep drop_caches
cat /proc/sys/vm/drop_caches

苏南大叔:centos如何查看内存等资源使用情况?centos内存优化方案 - 009
centos如何查看内存等资源使用情况?centos内存优化方案(图13-6)

当我们看到值为3的时候,就是清理内存的命令了。但是,这个值会自动重置为0。又恢复回去,并且内存清理的效果,也是当时有效,并不持久。

苏南大叔:centos如何查看内存等资源使用情况?centos内存优化方案 - 006
centos如何查看内存等资源使用情况?centos内存优化方案(图13-7)

下面的截图中,我们可以看到free -m的对比结果。

苏南大叔:centos如何查看内存等资源使用情况?centos内存优化方案 - 004
centos如何查看内存等资源使用情况?centos内存优化方案(图13-8)

苏南大叔:centos如何查看内存等资源使用情况?centos内存优化方案 - 005
centos如何查看内存等资源使用情况?centos内存优化方案(图13-9)

苏南大叔:centos如何查看内存等资源使用情况?centos内存优化方案 - 008
centos如何查看内存等资源使用情况?centos内存优化方案(图13-10)

永久解决方案

上述结果中,已经使用的内存中,只有少部分是已经安装的软件所使用的,大部分的内存是被linux的内存特殊机制占用了。就是对于所使用过的文件,都要放到内存区中保存,随时准备下一次读取。这个内存的占用是有一定范围的,而且下次会被读取到的概率,苏南大叔也表示怀疑。当然,这个是操作系统级别的概念,苏南大叔不能做出正确的判断。

但是为了得到更多的内存剩余可用值,苏南大叔觉得控制一下系统这种特殊的内存占用机制。这个系统值就是vm.min_free_kbytes,一般这个值都比较小,导致内存看起来,占用率都很高。大家需要修改这个值。这个值的位置,也存在于路径/proc/sys/vm/min_free_kbytes文件中,我们可以这样查看相关值。

当然,也可以通过下面的命令查看这个min_free_kbytes系统值,这个值除以1024就是我们平时所说的单位

sysctl -a | grep free_kbytes

苏南大叔:centos如何查看内存等资源使用情况?centos内存优化方案 - 014
centos如何查看内存等资源使用情况?centos内存优化方案(图13-11)

我们可以使用下面的命令修改这个min_free_kbytes系统值,下面命令的值是1G,注意,千万要根据你自己的服务器内存情况,设置一个合适的值,否则,系统会奔溃的,当然强制重启后,这个值会自动修复为正常值。

sysctl -w vm.min_free_kbytes=1048576

苏南大叔:centos如何查看内存等资源使用情况?centos内存优化方案 - 016
centos如何查看内存等资源使用情况?centos内存优化方案(图13-12)

我们可以修改,配置文件/etc/sysctl.conf,配置文件内容为:

vm.min_free_kbytes=1048576

修改这个值的话,和上面的命令行修改的效果是一致的。使用sysctl -a | grep free_kbytes都可以看到,最终生效了。重启系统之后,可以通过cat /proc/sys/vm/min_free_kbytes,看最终的生效值。

其他配置值

通过上述方式,可以配置很多系统项目,以下是一些可以修改的相关设置项目。如果您有兴趣,可以具体修改试试看。不过,要做好『系统不能进入』的最坏可能性打算哦。因为这些项目的值,都是根据不同的系统情况调整的,没有标准答案。如果你不确定你正在干什么,建议不要修改。否则,系统会崩溃.... 你懂的。

vm.dirty_ratio = 5
vm.dirty_background_ratio = 5
vm.dirty_writeback_centisecs = 100
vm.dirty_expire_centisecs = 300
vm.drop_caches = 3
vm.swappiness = 100
vm.vfs_cache_pressure = 200

苏南大叔:centos如何查看内存等资源使用情况?centos内存优化方案 - 030
centos如何查看内存等资源使用情况?centos内存优化方案(图13-13)

总结

写入配置的方法有三种:

  • 系统命令sysctl -w
  • 修改/proc/sys/vm/下的对应文件值
  • 修改总的设置文件/etc/sysctl.conf

查看相关设置的方法对应也有三种:

  • 系统命令是:sysctl -a
  • 查看对应文件:/proc/sys/vm/*
  • 查看对应文件:/etc/sysctl.conf

本文叙述的内容,操作起来都有一定的危险性,大家请谨慎操作。更多centos的经验文章,请点击这里查看:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   centos    宝塔面板