很多小伙伴或公司会自建Git服务器,大家会发现Git是非常耗内存的,近期以我们遇到的案例来说明一下如何处理(银子多的同学可直接跳过,升级一下内存即可):
阿里云服务器默认的swappiness参数配置是0,也就是说即使你配置了swap若程序不用光你购买的内存也无法让swap生效,这里需要自己设置一下,我改成了CentOS默认的30。
解释下什么是swappiness:swappiness参数决定了系统将数据从内存交换到swap空间的频率,数值设置在0到100之间,代表系统将数据从内存交换到swap空间的力度,这里要注意不是越大越好,可根据你的实际情况来决定一个平衡值。该数值越接近于0,系统越倾向于不进行swap,仅在必要的时候进行swap操作。由于swap要比内存慢很多,因此减少对swap的依赖意味着更高的系统性能。该数值越接近于100,系统越倾向于多进行swap。有些应用的内存使用习惯更适合于这种情况,这也于服务器的用途有关。
输入如下命令查看当前的swappiness数值:
cat /proc/sys/vm/swappiness
CentOS 7默认设置了30的swappiness,这对于大部分桌面系统和本地服务器是比较中庸的数值。对于VPS系统而言,可能接近于0的值是更加合适的,这就是阿里云为什么是0的原因。
修改这个值的命令如下:
sysctl vm.swappiness=30
让每次重启生效:
vi /etc/sysctl.conf #添加下面内容: vm.swappiness = 30
sysctl -p
这里还得说下另外一个指标:缓存压力(Cache Pressure )
配置项是vfs_cache_pressure,该配置项涉及特殊文件系统元文件条目的存储。对此类信息的频繁读取是非常消耗性能的,所以延长其在缓存的保存时间可以提升系统的性能。
通过proc文件系统查看缓存压力的当前设定值:
cat /proc/sys/vm/vfs_cache_pressure
这个数值比较高的话(0-100),意味着系统从缓存中移除inode信息的速度比较快。一个保守一些的数值是50,使用sysctl命令进行设置:
sysctl vm.vfs_cache_pressure=50
修改成每次重启生效:
vi /etc/sysctl.conf #添加以下内容 vm.vfs_cache_pressure = 50
sysctl -p
至于如何创建并启用swap,请参考我的这篇文章:https://www.cnblogs.com/Don/p/11432629.html