阿里云 Ubuntu Server 优化

入手了Aliyun的乞丐版安装Ubuntu 12.04 LTS用来测试 [CPU:1核 内存:512MB 系统盘:20G 带宽:1Mbps],却发现各种问题[如MySQL 5.6无法安装,bundle install会被killed掉],但最终都是因为性能原因。

尝试了几种方法,可以提高一些性能,最少在测试时能保证非系统原因运行通过。

添加 Swap

默认是不启用Swap分区的,这样内存在用完后,又没有交换分区,程序就会执行出错,简单的办法,手动添加Swap分区。

查看Server Swap 分区状况

1
$ sudo swapon -s

列表如果显示如下空白,则表示没有任何Swap文件系统被启用。

1
Filename Type Size Used Priority

接下来使用df看看我们的VPS上有多少空间可用,

1
$ df
1
2
3
4
5
6
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvda1 20903812 2329128 17526212 12% /
udev 243172 4 243168 1% /dev
tmpfs 100784 260 100524 1% /run
none 5120 0 5120 0% /run/lock
none 251952 0 251952 0% /run/shm

添加swap分区的步骤:

  • 创建Swap文件

    服务器的物理内存是512MB,按照1.5~2倍原则,我将swap文件设置为1GB。

    • “of=/swapfile” 设定了Swap的文件名
    • bs block size
    • count 多少个block
1
2
3
4
5
6
$ dd if=/dev/zero of=/swapfile bs=1024 count=512k
结果
524288+0 records in
524288+0 records out
536870912 bytes (537 MB) copied, 15.6832 s, 34.2 MB/s
  • 格式化swap文件
    1
    2
    3
    4
    5
    $ sudo mkswap /swapfile
    结果
    Setting up swapspace version 1, size = 524284 KiB
    no label, UUID=713d2270-32e3-4ec6-a905-24992aca964f
  • 激活swap文件
    1
    $ sudo swapon /swapfile
  • 加入自动启用项/etc/fstab
    1
    /swapfile none swap sw 0 0

自动清理

1
$ free -m

显示如下:

  • total 内存总数
  • used 已经使用的内存数
  • free 空闲的内存数
  • shared 多个进程共享的内存总额
  • buffers Buffer Cache和cached Page Cache 磁盘缓存的大小
  • -buffers/cache 的内存数:used – buffers – cached
  • +buffers/cache 的内存数:free + buffers + cached

可用的memory=free memory+buffers+cached。

1
2
3
4
total used free shared buffers cached
Mem: 492 485 6 0 16 155
-/+ buffers/cache: 313 178
Swap: 0 0 0

/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。操作如下:

1
$ echo 3 > /proc/sys/vm/drop_caches

默认值为0,可以手动将该文件的内容改为3,然后运行

1
$ sync

sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件

创建自动任务
1
$ vim /etc/crontab

在最后一行添加如下内容(每天凌晨1点释放内存):

1
00 1 * * * echo 3 > /proc/sys/vm/drop_caches

REF::