磁盘 I/O 优化
磁盘 I/O 优化
1. 性能检测
我们的应用程序通常都需要访问磁盘系统,而磁盘 I/O 通常都很耗时, 要判断 I/O 是否是一个瓶颈,有一些参数指标可以参考.
我们可以压力测试应用程序看系统的 I/Owait 指标是否正常. 例如,测试服务器有4个 CPU, 那么理想的 I/O wait 参数应该不超过 25% ,如果超过25% 那么I/O 很可能成为应用程序的性能瓶颈. Linux 操作系统下可以通过 iostat 命令查看.
[root@iZ239yqa63mZ ~]# iostat
Linux 2.6.-431.23..el6.x86_64 (iZ239yqa63mZ) // _x86_64_ ( CPU) avg-cpu: %user %nice %system %iowait %steal %idle
0.37 0.00 0.27 5.28 0.00 94.08 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
xvda 5.08 208.63 2.38
xvdb 1.95 30.33 0.35
通常我们在判断 I/O 性能时还会看另外一个参数. 就是 IOPS ,这个和存储在磁盘上的数据块的大小和访问的方式也有关, 但主要还是由磁盘的转速决定的. 磁盘的转速越高,磁盘的 IOPS 也越高.
2. 提升 I/O 性能
通常提升磁盘 I/O 性能的方法有:
1. 增加缓存,减少磁盘访问次数.
2. 优化磁盘的管理系统,设计最优的磁盘方式策略,已经磁盘的寻址策略, 这是在底层操作系统层面上考虑的.
3. 设计合理的数据存储数据块,以及访问这些数据块的策略,这些是在应用层面上考虑的,例如: 我们可以给存放的数据设计索引,通过寻址索引来加快和减少磁盘的访问量,还可以采用异步和非阻塞的方式加快磁盘的访问速度.
4. 应用合理的 Raid
磁盘 I/O 优化的更多相关文章
- (转) Delete/Truncate删除,释放表空间、降低高水位线、resize释放磁盘空间相关优化
硬盘空间不足,打算删除数据库中的多余数据,但删除数据后,硬盘硬盘空间不能释放.[delete后用:alter table table_name move truncate后用:alter tab ...
- linux磁盘读写性能优化
在LINUX系统中,如果有大量读请求,默认的请求队列或许应付不过来,我们可以 动态调整请求队列数来提高效率,默认的请求队列数存放在/sys/block/xvda/queue/nr_requests 文 ...
- 磁盘IO性能优化-实践
RAID卡缓存策略调整 原因详解 操作实例 I/O 调度算法 文件系统journal 磁盘挂载参数 操作实例 性能数据对比 RAID卡缓存策略调整 可以将RAID卡缓存策略由No Write Cach ...
- Nginx 磁盘IO的优化
L:132
- 常见的磁盘I/O和网络I/O优化技巧
磁盘I/O 优化 性能检测 应用程序通过访问磁盘来读取数据,而磁盘I/O 通常都是很耗时间的,所以一般我们来判断I/O是否有瓶颈的时候,就需要一些参数指标来参考. WAIT 指标 :压测应用程序,查看 ...
- kvm磁盘io优化以及性能测试以及与物理机对比
ubuntu下kvm的磁盘io性能优化步骤 1.virsh shutdown wcltest2 2.virsh edit wcltest2 <driver name='qemu' type='q ...
- 网心云在PVE下三种磁盘IO模式(No cache,Write through,Write back)选择与优化指南
---------------------------------------------------------------------------------------------------- ...
- 为什么kafka使用磁盘而不是内存
Kafka最核心的思想是使用磁盘,而不是使用内存,可能所有人都会认为,内存的速度一定比磁盘快,我也不例外.在看了Kafka的设计思想,查阅了相应资料再加上自己的测试后,发现磁盘的顺序读写速度和内存持平 ...
- linux服务器分析优化
转:http://jiekeyang.blog.51cto.com/11144634/1774473 一.系统性能分析 1.系统的性能是指操作系统完成任务的有效性.稳定性和响应速度.操作系统完成任务与 ...
随机推荐
- mongodb副本集搭建
1.创建目录 mkdir -p /data/r1 /data/r2 /data/r3 2.启动: bin/mongod --config ../mongod.conf --replSet r1 b ...
- 卡在checking installable status
npm install卡在checking installable status 笔者在使用NPM过程中经常会用到npm install命令,发现有时候会卡在checking installable ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第4章编程练习6
#include <iostream>using namespace std;struct CandyBar{ char kind[20]; float weight; int calor ...
- linux上安装mysql,亲试成功
安装mysql参考 网址https://blog.csdn.net/a774630093/article/details/79270080 本文更加详细. 1.先检查系统是否装有mysql rpm - ...
- tableview分割线
默认分割线,左边不到屏幕: TableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine; 三种结构体样式: /** UITab ...
- Jsp俩大内置对象学习
https://www.cnblogs.com/smyhvae/p/4065790.html post与get的区别 最直观的区别就是GET把参数包含在URL中,POST通过request body传 ...
- css3 学习 重点 常用
1 -webkit- -moz- -o-浏览器兼容 2 box-sizing:border-box; 两个近乎一样的div一样的样式 平分一个div 定义:属性允许您以确切的方式定义适 ...
- PAT Basic 1026
1026 程序运行时间 (15 分) 要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗 ...
- poj3087 Shuffle'm Up(bfs)
http://poj.org/problem?id=3087 注意复制字符串的时候,要在末尾加上'\0',否则导致strcmp出错. 还有就是开数组大小的时候看清楚一点,别开错了debug了好久. # ...
- C#设置WebBrowser IE浏览器版本
通过修改注册表的值,来指定winform程序打开的webBrowser的IE版本 1>方法一,通过程序修改注册表的值 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...