Toggle navigation
首页
技术
骑行
羽毛球
资讯
联络我
登录
ubuntu vm.swappiness为0时RAM满额造成的问题
2017-10-24
Linux
# 现象 最近在对部署在Linux Server的Web做压测时,发现当内存用尽时,系统会变得几乎无法响应,检查过后发现有大量的IO读操作。 经过一段时间后恢复响应 当vm.swappiness=0时这种现象很容易重现。 # 原因 这篇文章的作者做了一个实验,当Linux的内存溢出时会发生什么? http://pminkov.github.io/blog/what-happens-when-you-run-out-of-memory-in-linux.html 我们的许多进程都是位于磁盘上的可执行文件。当内核执行它们时,它必须读取指令。 如果有足够的缓冲区缓存,我们可以将这些指令存储在内存中,而不必再读取它们。 然而,我们的缓冲区缓存现在很小。所以当进程运行时,内核需要从磁盘中拉出指令,它可能将它们存储在缓冲区高速缓存中,但是当下一个进程正在运行时,它会尝试再次存储在缓存中,并将旧流程中存储的内容逐出。 所以这种情况下会造成大量的IO读取操作。 # 如何解决? 可以通过设定swap来解决。 当设定swap之后,内核会分配更多的内存给高速缓冲区,这样就不会重复 清空缓存 -> 读取指令 -> 存入高速缓存区 的循环。 设定swap可以参考:http://www.cnblogs.com/windchen/p/6261725.html PS. 1G内存建议设定为10,2G为5
×
本文为博主原创,如需转载,请注明出处:
http://www.supperxin.com
返回博客列表