LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1488|回复: 7

服务器8G内存,怎样建立swap分区?

[复制链接]
发表于 2009-2-23 16:01:18 | 显示全部楼层 |阅读模式
有人说建立1个8G的swap
有人说建立4个2G的swap
还有人说建立4个4G的swap  

到底建多大最好?
发表于 2009-2-23 16:10:56 | 显示全部楼层
服务器的话建一个4G的就行了,反正也不需要休眠
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-23 17:02:48 | 显示全部楼层
这服务器准备跑tomcat 和 mysql
WEB游戏
回复 支持 反对

使用道具 举报

发表于 2009-2-23 22:40:50 | 显示全部楼层
官方推荐是8G 。。呃  Redhat的官方
回复 支持 反对

使用道具 举报

发表于 2009-2-23 23:34:00 | 显示全部楼层
我也想知道。。到现在用得最多的就是4G的。

想知道怎么样最好。
回复 支持 反对

使用道具 举报

发表于 2009-2-24 15:36:29 | 显示全部楼层
我认为建立多大swap 关键不在于你有多少内存,而在于针对内存耗尽时你做出的反应。

缺省情况下,内核会杀掉内存不足时仍然在申请内存的进程,因此 Linux 下的 malloc() 函数永远不会返回 NULL。
(有多少 Linux 程序员知道这个事实? Linux 下的 malloc 永远不会返回 NULL。。。)

但是有的时候,内存需要一个缓冲,毕竟临时会需要大量内存。这个时候给1G到2G的交换是合适的。

如果大量的交换都被占用,这个时候你的系统如何进行?你有两个方案:
1。任由内存耗尽,内核此时会试图杀掉内存不足的进程。
2。提供足够大的交换空间,此时整个系统会耗费大量的资源在真实内存/虚拟内存交换上面,系统变得非常慢。

你的选择变成了:你需要杀掉一部分进程,还是任由系统变得缓慢?

对于实际的应用服务器来说,“服务不可”是一件非常显然的事情,很容易因此而激活备份服务器,或者使用监控进程让关键服务重启。但是“服务器很慢”并不是一件非常显然的事情,此时就算 ssh 上去都变得很艰难。解决问题也很难,你也无法监控这件事情的存在,毕竟程序对于“系统慢”这种fuzzylogic的事情是很难判断的。

那么我的建议是:不论你有多大内存,都不要创建超过2G的swap。对于关键性服务器或者配备了负载均衡的服务器而言,甚至可以考虑不创建swap。
回复 支持 反对

使用道具 举报

发表于 2009-2-24 16:34:26 | 显示全部楼层
Post by poet;1951920
我认为建立多大swap 关键不在于你有多少内存,而在于针对内存耗尽时你做出的反应。

缺省情况下,内核会杀掉内存不足时仍然在申请内存的进程,因此 Linux 下的 malloc() 函数永远不会返回 NULL。
(有多少 Linux 程序员知道这个事实? Linux 下的 malloc 永远不会返回 NULL。。。)

但是有的时候,内存需要一个缓冲,毕竟临时会需要大量内存。这个时候给1G到2G的交换是合适的。

如果大量的交换都被占用,这个时候你的系统如何进行?你有两个方案:
1。任由内存耗尽,内核此时会试图杀掉内存不足的进程。
2。提供足够大的交换空间,此时整个系统会耗费大量的资源在真实内存/虚拟内存交换上面,系统变得非常慢。

你的选择变成了:你需要杀掉一部分进程,还是任由系统变得缓慢?

对于实际的应用服务器来说,“服务不可”是一件非常显然的事情,很容易因此而激活备份服务器,或者使用监控进程让关键服务重启。但是“服务器很慢”并不是一件非常显然的事情,此时就算 ssh 上去都变得很艰难。解决问题也很难,你也无法监控这件事情的存在,毕竟程序对于“系统慢”这种fuzzylogic的事情是很难判断的。

那么我的建议是:不论你有多大内存,都不要创建超过2G的swap。对于关键性服务器或者配备了负载均衡的服务器而言,甚至可以考虑不创建swap。


精华,我要好好思考一下这个重点:Swap用来做什么。
回复 支持 反对

使用道具 举报

发表于 2009-2-24 22:44:14 | 显示全部楼层
说的对呀,如果你真需要大量的交换工作,哪就建吧,不需要就少建点。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表