linux服务器的swap分区大小设置问题
最近试着在服务器上把内存全部耗光了,查看了一下资源,内存没了,swap分区也用了一小半的空间。
但是问题是,此时的网站基本上打不开了,换句话说,可以认为这个网站已经挂掉了。
那么,swap分区的作用是不是很不明显?毕竟硬盘的速度比内存低了几个数量级,这种情况下更应该重启服务器。
请问,swap分区还有什么其他的重要作用吗?服务器LAMP环境。谢谢! 展开
但 SWAP 的性能烂地球人都知道,所以不要追求 SWAP 能当内存用。
apache 这种服务器程序主要是针对大型服务器设计的,内存必须上 G ,而且他真的是有多少内存就用多少内存的货。沾满内存是可以增加性能的。
但另一个问题是你的网站代码是不是有内存方面的使用问题,有些代码会因为内存使用的不规范导致过多的内存占用。
服务器端的内存回收机制要等程序运行完毕退出,而且还有一个延迟后才会强行回收内存的。有些如果有对外的链接,要等链接超时后才会对内存回收。比如数据库,这也是内存占用大户。
总的来说,apache 现在最好上 64 位系统+ 4G 内存,至于服务器的 SWAP 不能按普通的计算机那种分配来考虑。你要考虑的是保证程序不因为内存不足而报错,所以尽可能的大是一个方向(但其实真用不到……)。
小内存就不应该用 apache 。
SWAP 不能当内存用。
也就一个wordpress而已……不知道是不是这个主题写的代码质量不好,或者是某个插件的问题……
我试试把插件全部关掉,再用官方提供的那个主题,看看会不会有这个问题。
问题是我狂按F5进行刷新,8G内存也用不了多久就挂掉了……
我觉得就是因为你狂按 F5 导致了拒绝服务攻击。
请注意操作系统也不是把swap分区或是windows下的虚拟内存页面文件当成内存来管理的。仔细读读操作系统原理的资料以及系统内存管理的技术说明,swap或是win虚拟内存更多是被系统当成一种低速的cache使用,或者寄放长期不用的程序代码段在内存中释放空间做高速cache。总之强调一种缓存而不是内存功能。而且你这种物理内存枯竭只能证明是系统资源过少或者程序胃口太大,这时讲不了什么cache了,只能当内存使用。。。好奇的话,你可以试试在物理内存足够的机器上启动和关闭虚拟内存(或swap)进行试验,如果虚拟内存(或swap)真是当作内存使用应该是没有性能提升的,但是实验结果表示在物理内存足够的机器上,由于虚拟内存为物理内存腾出更多cache,系统流畅度上升。(当然效果不明显,由于物理内存足够时即使无虚拟内存系统也会在内存中缓存最常用数据)
以上是对桌面应用说的。对于服务器,假如系统配置得好,程序内存管理也比较出色,那么可以腾出更多内存充当cache,对于访问大的站点(尤其是数据库站点),一个大cache空间很有效的提升响应速度。。。
win以及linux的默认虚拟内存基本都是物理内存1.5倍到2.5倍,这种分配思想就是最佳情况下程序代码常用的只是极少一部分,内存几乎全部做高速cache放高使用率数据,大量不常用代码寄存在虚拟内存,少量低使用率数据待虚拟内存。这样内存和虚拟内存得到最佳利用。
当然,如果发现仍然不够,可再增加。
这个时候的确应该重启服务器,你说对了。
不能认为swap的作用不明显,他有空闲不能确保你的机器正常,但swap耗干你的机器一定会挂。
这个还是得看应用,写的好的应用,通过合理使用swap(或cpu多线程技术)达到更好的执行效率,
谢谢你的回复。
服务器暂时就只有512M内存啦,因为是个新站(还没上线呢,尚在备案),初期没有什么访客,所以就采用比较低的配置,反正云服务器升级配置特简单,以后好解决。
SWAP也是512M的。
物理内存几乎用光了,SWAP也用了一部分,网站状态≈挂了……
只是在我本地虚拟机里面的实验(环境跟服务器一样)。
其实就是我按着F5不停刷新,果断出现了大量的httpd进程,每个进程占了不少内存……
看到httpd进程,估计你的应用是apache httpserver(或IBM httpserver),内存和swap都加点吧,512M太少
主要看你服务器的内存的耗用多少
谢谢。
服务器是centos,apache+mysql+php的,放的网站用的wordpress程序。
大概需要多大的内存?
靠 这个别问我 你自己看看平时需要多少慢慢加
8G够了吧