前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

磁盘IO与swap分区:为何用到swap分区会导致服务器变慢

qiguaw 2024-10-28 17:27:43 资源文章 16 ℃ 0 评论

在Linux系统使用过程中,使用free -m/-g指令,可以看到当前服务器被使用的缓存,内存,和Swap分区部分。而很多时候,为了保障服务器的运行速度,在内存允许的情况下,都会禁止使用Swap分区。在我的工作过程中,也遇到过这个问题,在Swap被使用的过程中,后台服务变的时缓时快,出现了一些毫无报错的阻塞现象,尽管不能完全归咎于Swap分区问题,但是在这部分内存被释放和禁用后,服务器性能确实得到了提升,故在此对这一问题进行探讨。

首先,放一点基础操作干货:

查看服务器内存:

free -g(以GB为单位查看服务器内存余量)

free -m(以MB为单位查看服务器内存余量)

查看磁盘/文件大小

df -m //磁盘使用情况

查看即时的系统线程运行情况:

top

(建议在top后使用“shift+m”"c",可以看到运行内容的详细路径和一些信息)

杀掉线程:

kill pid(pid来源于top命令下的线程前面的那个pid)

先来看看磁盘IO的概念:

目前磁盘都是机械方式运作的,主要体现在磁盘读写前寻找磁道的过程。磁盘自带的读写缓存大小,对于磁盘读写速度至关重要。读写速度快的磁盘,通常都带有较大的读写缓存。磁盘的寻道过程是机械方式,决定了其随机读写速度将明显低于顺序读写。在我们做系统设计和实现时,需要考虑到磁盘的这一特性。为了充分发挥多块磁盘的效率,不建议使用传统的RAID方式。比较好的做法是每块磁盘单独mount,通过程序来控制对多块磁盘进行并发读写。采用单盘mount,文件的备份和冗余可以通过多台机器实现。

读写IO的整个过程,就是发出指令之后,从磁盘读取某段扇区的内容的过程。

关于Swap分区:

Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。 其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。

通俗来说,Swap分区就是在服务器的主存不够用的时候,将硬盘分出来一部分当做内存用。

而就磁盘的IO性能来说,外部存储的性能肯定不如内存,这就导致了很多服务进程的速度仿佛从2019年退化到了1999年。

一般默认的Swap分区使用,是在内存被使用了70%的时候,也就是说,即时内存还有,也被使用了硬盘来完成内存的工作。

而正常使用过的内存再用完之后被释放了,等到工作人员查看的时候,就会发现这一奇特现象:内存尚有余额,CPU也没有跑满,但是应用进程就是很慢,一切仿佛一个谜,这就好比隐隐约约感觉到有个BUG小虫在跑却摸不到它的影子,呈现“明明一切都正常但是就是有问题”的吐血现状,使维护人员头秃。

这部分虚拟内存,在大型集群服务器上使用的时候,还是建议关Swap分区的使用,或者设定为90%以上内存被使用的时候再开启。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表