1先说下swap的作用,主要是用来在物理内存不足时,把一部分磁盘空间作为内存使用,以防止物理内存满,导致进程退出或系统宕机。
2 常规服务器可以按照如下规则设置swap大小:
· 4G以下,如果磁盘足够,可以设置内存2大小。
· 4-16G物理内存,可将SWAP设置15倍,即6-12G大小。
· 16G+物理内存,SWAP设置为16G。
3极端情况,可以不设置swap,例如:大厂的高并发数据库服务器。除非老机子,新机子,一般都不需要SWAP交换分区了.如果是老机子,参考如下解决方法: 1、启动应用时报内存不足,直接Linux命令行top查看下。swap used100%,0free。 2、reboot服务器能有效的释放swap,可是很多情况下是不能重启服务器的。
前几天尝试用一台新的服务器进行开发,运行两个Node进程后CPU占用率直接上升到100%,开始以为是Node版本问题,切换版本后仍存在这个问题,使用 top 命令查看运行中进程,发现一个名为 kswapd0 的进程占用极高的CPU,这个进程的作用其实是在内存不足时将暂时用不到的数据转存到虚拟内存(Swap分区),而刚好我的服务器没有设置Swap分区,才导致CPU占用率过高,看来问题的原因找到了,接下来只需要设置Swap分区即可。
如果没有任何输出,表明系统没有配置swap
确保有足够的空间创建Swap分区
以上命令会在根目录创建大小为1G的文件,大小可根据需要进行调整,一般取和内存一般大小
验证是否创建成功
修改分区文件的权限,只允许 root 用户进行读取
将其标记为swap分区
启用分区,允许系统开始使用
再次检查系统分区
如果输出类似
表示分区已经创建成功
目前已经在当前会话的启用的swap分区,但是如果系统重新启动,分区就会消失,我们可以通过修改 /etc/fstab 的配置来使分区持久化
swappiness 参数配置系统使用swap分区的频率,数字越小,系统对swap的依赖越小,如果设置为接近0的数字,那么内核只有在绝对必要情况下才会将数据交换到磁盘。应为和硬盘交换数据比RAM慢的多,所以这个数字越小,通常会让系统加快
查看当前swappiness
临时修改swappiness
永久修改(推荐)
/etc/sysctlconf
增大 vfs_cache_pressure 的值会让系统倾向于删除缓存中inode和dentry信息,进而导致系统频繁访问文件系统,我们可以通过输入以下内容将其设置为更保守的设置,例如50:
只在当前会话生效
永久修改(推荐)
/etc/sysctlconf
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)