关于VPS内存不足的一些说明和解决办法

一、关于swap的几点说明
1,swap一般称作为“交换空间”,其作用相当于Windows上的“虚拟内存”。
2,swap实际上是硬盘上的一块空间。
3,swap内保存的数据并不能直接供CPU直接使用。CPU如果想用swap内的数据,需要先把数据从硬盘转移到内存,然后再交给CPU。
4,swap内保存的是暂时不使用的或者使用频率很低的数据。
5,数据从swap到内存的速度比从内存到cpu的速度,要慢几百倍甚至上千倍。

二、关于内存不足
1,swap存在的意义在于存放不经常使用的数据,而不是物理内存放不下的数据。
2,如果经常使用的数据在物理内存中存放不下,内核会被迫将部分数据分配到swap。
3,如果第2条所写的发生了,接下来会产生大量的硬盘读写IO,原因参见〖关于swap的几点说明〗中的第2条。
4,接上条,大量的硬盘读写IO会产生的后果为:
(1)CPU在处理运算时会有大量的时间在等待硬盘IO,严重影响服务器的响应速度。
(2)同服务器上的其他VPS都会受到影响(除非使用的不是同一硬盘)。
5,*请注意区分“使用swap”和“进行swap”:
(1)使用swap,是指数据存放在swap中,是固定的状态,不会占用硬盘IO。
如下图,系统虽然占用了13M的swap,但是没有进行swap交换。

(2)进行swap,是指把数据从swap转移到物理内存,或者从物理内存转移到swap的操作,是执行的过程。
如下图,系统几乎每秒都在进行大量内存交换操作。

三、对于内存不足的建议
(1)如果内存不足,应该及时升级VPS内存。否则不光会影响到自己的VPS系统,而且会影响到其他的VPS。
(2)不要尝试通过增加swap来解决内存不足的问题,问题根源是由于物理内存不足,再多的swap也是于事无补的。

(0)

相关推荐

  • 关于VPS内存不足的一些说明和解决办法

    一.关于swap的几点说明 1,swap一般称作为"交换空间",其作用相当于Windows上的"虚拟内存". 2,swap实际上是硬盘上的一块空间. 3,swap内保存的数据并不能直接供CPU直接使用.CPU如果想用swap内的数据,需要先把数据从硬盘转移到内存,然后再交给CPU. 4,swap内保存的是暂时不使用的或者使用频率很低的数据. 5,数据从swap到内存的速度比从内存到cpu的速度,要慢几百倍甚至上千倍. 二.关于内存不足 1,swap存在的意义在于存放

  • 当master down掉后,pt-heartbeat不断重试会导致内存缓慢增长的原因及解决办法

    最近同事反映,在使用pt-heartbeat监控主从复制延迟的过程中,如果master down掉了,则pt-heartbeat则会连接失败,但会不断重试. 重试本无可厚非,毕竟从使用者的角度来说,希望pt-heartbeat能不断重试,直到重新连接上数据库.但是,他们发现,不断的重试会带来内存的缓慢增长. 重现 环境: pt-heartbeat v2.2.19,MySQL社区版 v5.6.31,Perl v5.10.1,RHEL 6.7,内存500M 为了避免数据库启停对pt-heartbea

  • 导致MyEclipse内存不足的原因分析及解决办法

    1.修改eclipse.ini 在Myeclipse安装目录下G:\MyEclipse8.5\Genuitec\MyEclipse 8.5有一个myeclipse.ini配置文件,设置如下: -vmargs -Xmx512m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=64m 2.设置Default VM Arguments 在myEclipse中,打开Windows-> Preferences->Java->Installed JREs

  • IE8 内存泄露(内存一直增长 )的原因及解决办法

    最近开发的时候对页面使用了定时的局部更新,结果在ie6,7和Firefox下,一切正常,而在ie8下过上几个小时就浏览器就崩溃了,显示是内存溢出,我以为是代码写的不好导致内存泄露,但是ie6,7又正常,调查了一下,原来这是ie8的bug. 问题点 在IE8中,生成特定Dom节点所占用的内存是不会被释放的,即使这些节点被删除内存也不会被释放. 内存泄露的节点类型包括:form.button.input.select.textarea.a.img和objec 其他的大部分节点类型是不会泄露的,例如:

  • 5个Android开发中比较常见的内存泄漏问题及解决办法

    android中一个对象已经不需要了,但是其他对象还持有他的引用,导致他不能回收,导致这个对象暂存在内存中,这样内存泄漏就出现了. 内存泄漏出现多了,会是应用占用过多的没存,当占用的内存超过了系统分配的内存容量,就会出现内存溢出了导致应用Crash. 了解了内存泄漏的原因及影响后,我们需要做的就是掌握常见的内存泄漏,并在以后的Android程序开发中,尽量避免它.下面搜罗了5个Android开发中比较常见的内存泄漏问题及解决办法,分享给大家,一起来看看吧. 一.单例造成的内存泄漏 android

  • Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法

    一.发现问题 在尝试编辑博客站点的Wordpress主题时,突然发现博客站点无法连接:刷新后提示"建立数据库连接错误"之类的错误.自然想到是mysql可能出错了,所以就登陆了VPS主机,尝试启动mysql服务,但是提示failed. 二.解决方法 1.打开/var/log/mysql/error.log文件,查看出错日志.在阅读日志时发现第一条错误提示是:[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrad

  • jQuery内存泄露解决办法

    本文大家分享了jQuery内存泄露解决办法,供大家参考,具体内容如下 思路:为JQuery扩展删除jquery元素对象的方法,大大减轻内存泄露的压力 ;(function($){ if(!$.lui.widget) $.lui.widget = {}; //$.lui.newGuid()生成随机32位id //如果采用此方式多次生成jquery对象的话,html代码字符串会在内存中多次重复,占用额外的内容,也会有泄露.而$("<span></span>").at

  • Android性能优化之利用强大的LeakCanary检测内存泄漏及解决办法

    前言: 最近公司C轮融资成功了,移动团队准备扩大一下,需要招聘Android开发工程师,陆陆续续面试了几位Android应聘者,面试过程中聊到性能优化中如何避免内存泄漏问题时,很少有人全面的回答上来.所以决定抽空学习总结一下这方面的知识,以及分享一下我们是如何检测内存泄漏的.我们公司使用开源框架LeakCanary来检测内存泄漏. 什么是内存泄漏? 有些对象只有有限的生命周期.当它们的任务完成之后,它们将被垃圾回收.如果在对象的生命周期本该结束的时候,这个对象还被一系列的引用,这就会导致内存泄漏

  • 访问php时提示内存位置访问无效的解决办法和思路分析

    我们就需要找到是哪一个DLL文件加载出现了问题.排查方法是: 将php.ini中 display_startup_errors = Off 改为display_startup_errors = On . 这是访问php页面,服务器上会弹出php错误的提示对话框,你就可以明确看到是哪一个dll文件加载失败,有时会有多个dll文件加载失败,需要你先分号(;)注释掉php.ini中提示那个dll后继续访问如此反复排查. 把出问题的dll都用分号(;)注释掉后,php就可以正常运行了. 如果加载失败的d

  • MySQL占用内存较大与CPU过高测试与解决办法

    更改后如下: innodb_buffer_pool_size=576M ->256M InnoDB引擎缓冲区占了大头,首要就是拿它开刀 query_cache_size=100M ->16M 查询缓存 tmp_table_size=102M ->64M 临时表大小 key_buffer_size=256m ->32M 重启mysql服务后,虚拟内存降到200以下. 另外mysql安装目录下有几个文件:my-huge.ini .my-large.ini.my-medium.ini..

随机推荐