这几天注意到我的EC2机器上有非常大量的IO,导致AWS的总体开销增加了很多。比如9月份的帐单中:
I/O requests 120,076,984 IOs 费用$14.41
30天有超过1亿次IO,也就是每秒钟有40几次IO,这个频率也高了一点吧……
于是尝试了以下优化的方法:
- 把mod_pagespeed的缓存移到/dev/shm中。缓存嘛,无所谓的。
- 把apached的日志文件也移到了/dev/shm中,反正我也不经常看log。
然后发现IO次数没有明显下降。后来开了iotop监测进程的io,也没有发现明显的异样。
再后来实在没办法的时候,随便尝试了一个优化,把/tmp做成tmpfs,就是在/etc/fstab中添加一行:
1
|
tmpfs /tmp tmpfs defaults 0 0
|
然后IO就神奇地降下来了…下图是36小时内EBS的VolumeWriteOps数据,可以看出,把/tmp做成tmpfs后,WriteOps的数量明显下降:
虽然还不知道到底是哪个进程在频繁写入/tmp,不过钱已经省下来了,还算蛮开心的……
https://leonax.net/p/4915/high-frequency-io-on-ebs/