VPS优化之添加swap交换分区

相信很多使用VPS的朋友和我一样,没有太多的钱买更多的内存,通常使用swap交换分区来给VPS提高一下性能。这次朋友购买了阿里云的主机,512M的内存,生成html的时候,mysql和php-fpm进程直接死掉,让阿里云的客服添加交换分区。NND,不给添加,回复说不建议添加,真想添加的话,自己添加去。真服了!!!

下面说一下VPS添加swap交换分区的方法(只有Xen的VPS可以,OpenVZ不支持添加swap)。

1、进入一个目录

cd /var/

2、获取256M的文件块:

dd if=/dev/zero of=swapfile bs=1024 count=262144

3、创建swap文件

/sbin/mkswap swapfile

4、激活swap文件

/sbin/swapon swapfile

5、查看一下swap是否正确:

/sbin/swapon -s

6、加到fstab文件中让系统引导时自动启动

vi /etc/fstab

在末尾增加以下内容:

/var/swapfile swap swap defaults 0 0
也可以执行如下命令,感觉这样更方便
echo "/var/swapfile swap swap defaults 0 0" >>/etc/fstab

=========================================

删除交换空间:
a 禁用交换分区:
# swapoff /dev/sdb2
b 从 /etc/fstab 中删除项目;
c 使用fdisk或yast工具删除分区

顺便附上DD命令的参数介绍:

dd命令
功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用dd命令把软盘上的数据写成硬盘的一个寄存文件,再把这个寄存文件写入第二张软盘上,完成diskcopy的功能。需要注意的是,应该将硬盘上的寄存文件用rm命令删除掉。系统默认使用标准输入文件和标准输出文件。

语法:dd [选项]

if =输入文件(或设备名称)。
of =输出文件(或设备名称)。
ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块。
obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。
cbs = byte 一次转换bytes字节。
count=blocks 只拷贝输入的blocks块。

出处:http://www.vpser.net/opt/vps-add-swap.html

 

在红帽企业版Linux中,如何删除swap分区?

在红帽企业版Linux中,如何删除swap分区?

删除一个swap分区的步骤如下:

1. 首先保证没有使用硬盘(没有挂载分区,没有使能swap分区)。最简单的方法是以救援模式启动系统,当提示挂载文件系统时,选择Skip。

不过,如果当前设备不包含任何在用的分区,那么可以直接卸载文件系统,使用swapoff命令关闭硬盘上的交换分区。

2. 在root提示符下,执行如下命令确保交换分区已关闭(这里假定/dev/hdb2是交换分区)

swapoff /dev/hdb2

3. 从/etc/fstab中移除记录

4. 使用parted删除分区:

1)在root提示符下,键入命令:parted /dev/hdb,这里,/dev/hdb是要删除的交换分区所在的磁盘

2)在parted提示符下,键入print命令查看已有分区,并查找想要删除的交换分区的此设备号。

3)在parted提示符下,键入rm MINOR,这里MINOR是要删除的分区的次设备号

4)键入quit退出parted提示符。

 

增加FreeBSD服务器的swap交换分区

晚上有客户反映服务器无法访问了,我好不容易蹭了附近邻居的一个无线网络,连上服务器后发现了很多异常链接,swap交换空间占用99%左右,日志中发现如下记录

Jul 27 23:52:19 freebsd1 kernel: pid 49901 (httpd), uid 1002, was killed: out of swap space

立即重启了apache后,swapinfo显示占用情况很快从5%迅速上升到64%直到99%

在 FreeBSD 中创建交换文件

  1. 确认您的内核配置包含虚拟磁盘(Memory disk)驱动 (md(4))。它在 GENERIC 内核中是默认的。
    device   md   # Memory "disks"
  2. 创建一个交换文件64M(/usr/swap0):
    # dd if=/dev/zero of=/usr/swap0 bs=1024k count=64
  3. 赋予它(/usr/swap0)一个适当的权限:
    # chmod 0600 /usr/swap0
  4. 在 /etc/rc.conf 中启用交换文件:
    swapfile="/usr/swap0"   # Set to name of swapfile if aux swapfile desired.
  5. 通过重新启动机器或下面的命令使交换文件立刻生效:
    # mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0

成功加载新交换分区后 Continue reading

FreeBSD交换分区大小的重要性

查看交换分区大小:

#swapinfo -m

前天给数据库服务器添加完内存,发现系统运行不太正常,效率比较低下,vmstat 中 faults 的 system call 比较高,有点怀疑是交换分区比物理内存少的缘故(交换分区还是原来的6G内存的大小)。再次温习手册

The kernel’s VM paging algorithms are tuned to perform best when the swap partition is at least two times the size of main memory. Configuring too little swap can lead to inefficiencies in the VM page scanning code and might create issues later if more memory is added.

后将交换区增加到物理内存的两倍,虽然效率没有完全恢复,但目前看来还是好了很多。(由于是现有系统,只能通过添加 Swapfiles 的方式增加交换分区,但基于 Swapfiles 方式对性能多少有所损耗)

新系统安装的时候都应该将交换分区设置为物理内存的两倍!On larger systems with multiple SCSI disks (or multiple IDE disks operating on different controllers), it is recommend that a swap is configured on each drive (up to four drives).

来源:http://hi.baidu.com/hockbase/blog/item/991559fbe56d7a176c22eb74.html

FreeBSD下添加交换分区大小

http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/adding-swap-space.html
11.14 添加交换空间
不管您计划得如何好,有时候系统并不像您所期待的那样运行。 如果您发现需要更多的交换空间,添加它很简单。 有三种方法增加交换空间:添加一块新的硬盘驱动器、通过 NFS 使用交换空间和在一个现有的分区上创建一个交换文件。

要了解关于如何加密交换区, 相关配置, 以及为什么要这样做, 请参阅手册的 第 18.17 节

11.14.1 在新的硬盘驱动器上使用交换空间

这是添加交换空间最好的方法, 当然为了达到这个目的需要添加一块硬盘。 毕竟您总是可以使用另一块磁盘。如果能这么做, 重新阅读一下手册中关于交换空间的 第 11.2 节 来了解如何最优地安排交换空间。

11.14.2 通过 NFS 交换

除非没有可以用作交换空间的本地硬盘时, 否则不推荐您使用 NFS 来作为交换空间使用。 NFS 交换会受到可用网络带宽限制并且增加 NFS 服务器的负担。 Continue reading

增加SWAP分区大小

cd /var

查看现在swap分区大小
free -m

设置大小4G
dd if=/dev/zero of=swapfile bs=1024 count=4000000

mkswap swapfile

swapon swapfile

free -m

如果需要一直保持这个 swap ,可以把它写入 /etc/fstab
vi /etc/fstab

/var/swapfile swap swap defaults 0 0

完成!

来源:http://www.gaojinbo.com/%E5%A2%9E%E5%8A%A0swap%E5%88%86%E5%8C%BA%E5%A4%A7%E5%B0%8F.html