未设置SWAP分区导致内存耗尽主机Hang死
这是一个真实的案例,在2009年,2010年,主机多次被Hang死,当时的情况是主机可以ping通,但ssh却连接不上,导致cluster无法切换,只能人工去重启那台被Hang死的
这是一个真实的案例,在2009年,2010年,主机多次被Hang死,当时的情况是主机可以ping通,但ssh却连接不上,导致cluster无法切换,只能人工去重启那台被Hang死的机器,才能正常切换。到底是什么原因引起的呢,在看了淘宝这篇文章后,
茅塞顿开,我们的主机是72G内存,48G是MySQL(Innodb_Buffer_Pool)内存缓冲池所用,但在机器正常的情况 下,free -m,发现内存已经超过了48G,这是因为其他程序或者系统模块又需要额外的内存,比如cp一个大文件,或者在主库上mysqldump数据库等等,这时 当物理内存不够用的时候,操作系统就会把MySQL所拥有的一部分地址空间映射到swap上去。而我们当时,没有建立swap分区是考虑到将分配给 MySQL的地址空间映射到swap上,导致性能会有突起波动,但这是一把双刃剑,香港服务器租用,虽然避免了使用swap分区,但结果会导致机器被Hang死。
所以就这个问题,我们后来的解决方案是:
一、增加2G SWAP分区,避免内存耗尽时,香港服务器,机器不会死机,可以给予些缓冲,重启前端程序释放MySQL压力。
二、增加内存监控,当内存使用率达到90%,通过重启MYSQL来释放内存,避免机器死机。
三、开发设计的前端CACHE层,减少了数据库层的压力。
在2011年至2012年10月,机器都运行稳定,虚拟主机,没有出现过宕机。
本文出自 “贺春旸的技术专栏” 博客,请务必保留此出处
上一篇: html标签到底闭合还是不闭合