降低I/O负载的策略

以下内容转载自《大规模Web服务开发技术》
以缓存为前提的降低I/O负载的策略
1.如果数据规模小于物理内存,就全部缓存;
此外之前说过的大规模数据处理时数据压缩很重要,说的是将数据压缩之后,就能把磁盘内容全部缓存进来。比如一部的压缩算法乳LZ算法等,对于文本文件怎么说也能压缩到一部左右。
假如是个4GB的文本文件,在2GB内存的机器上肯定无法缓存,文件后半段部分完全放不到缓存之内;但先压缩再保存的话,2GB中能缓存的比例就大大增加了。

2.考虑与经济成本的平衡性
->现在最经济的配置为8GB-16GB

扩展到多台服务器-无法全部缓存的情况
如果缓存不过来的话,就扩展到多台服务器上
->CPU负载分散只需简单的增加
->I/O分散要考虑局部性
单纯增加数量无法保证可扩展性,无法缓存的比例任然不变->立即再次变成瓶颈

页面缓存起到的降低I/O负载的效果
如果无法增加内存,可以考虑将数据分隔,分别放在不同的服务器上。如果能完美地分隔数据的话,磁盘I/O次数不仅会与增加的服务器数量成比例下降相当的次数,而且缓存中保存的数据比例还会增加,能够极大地提高吞吐量。

要先读取一次磁盘才会页面缓存
在MySQL等数据库中处理大规模数据时要注意这一点。例如,系统维护等重启了服务器,那么之前内存中缓存的页面就全部清空了。有大量请求的数据库服务器在没有缓存的情况下,实际运行状况会怎样呢。可以想象,几乎所有数据库访问都会导致磁盘I/O发生。大规模环境下导致数据库锁定,服务停止也屡见不鲜。因此需要精心考虑,让数据库将必要的数据读取一次之后,再放回生产环境。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值