`
edison0663
  • 浏览: 79475 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于磁盘IO的一点东东

阅读更多

前天,发现新上的服务暴露了一个问题,有经常一阵阵的Connection reset by peer, 客户端超时断开,究竟是什么原因引起的呢?非常费解。

昨天做了一个timetrack,去跟踪每个有可能耗时的关键调用,观察到有时候调用存储组件(一个自己实现的日志流水存储组件)的读数据接口偶尔会需要耗时1~3秒,最夸张是有到6秒,(这些时间是相对时间,并非cpu占用时间), 查看机器负载 loading 在正常范围。 由于是日志流水存储,所以所有的写操作都是append,下意识一直在怀疑是操作系统间歇的将buffer/cache中的数据回写磁盘,导致瞬间磁盘超负荷工作,导致这瞬间的所有IO被吊住,同时吊住后面的一些请求。

导致批量请求被“延迟”。

 

虽然怀疑是非常有可能的,但毕竟是下意识,必需找到一些数据才支撑自己的猜想。

 

 

 

1 vmstat 来观察:

 

使用vmstat, 发现 bo 有规律的 突升, 接着iowait变高到90左右,被block的进程数从几个变到90或上百,持续时间约2秒后回复正常,bo也降到正常值。

 

2 iostat 来观察:

使用iostat -tdx 1去观察每个盘的具体工作状况。重点关注几个参数:

 

w/s:   每秒写的请求

avgqu-sz: 平均I/O队列长度

await: 平均每次设备I/O操作的等待时间 (毫秒)。

svgtm:平均每次设备I/O操作的服务时间 (毫秒)。

%util:一秒中有百分之多少的时间用于 I/O 操作。

 

观察到 w/s , avgqu-sz, await, svgtm %util 都突升。然后 又恢复正常水平。

 

以上这些参数,可以看出, 存在瞬间的写磁盘操作,导致磁盘超负荷, avgqu-sz的值很大,说明还有大部分I/O的请求都等待。

证明是这种偶发的写盘,导致突然性能低下。

 

分析:

 

追加写日志存储模型,就是想merge尽量多的写,然后一次性flush到磁盘上,提高磁盘写性能。但是,假设将10秒的量压到一瞬间去做,这瞬间磁盘全部用于flush, 那这瞬间的读,写肯定会被吊住。

 

我们还是想merge写操作,但是不需要merge这么久,我们需要的是均摊开销,将每秒的写操作merge,应该就可以解决这个问题。

 

于是:

调整操作系统 将buffer cache 回写到磁盘的一些参数, 让其回写更频繁一点。请教了相关的同事,P总给予指点,然后在zero同学的协助下,调整几个系统参数,通过几次,发现去掉预测的效果。Connection reset by peer的量降了下来。这也标志着服务质量有了质的改变,多了一个重要的监控指标。

 

ps: 主要调整的pdflush进程的一些参数, sysctl -a|grep vm,可以看到相关参数。

具体如何调整,就需要根据不同的场景做设置。具体参数可以参考:

http://www.pgsqldb.org/mwiki/index.php/Linux%E5%86%85%E6%A0%B8%E5%8F%82%E6%95%B0

 

1
0
分享到:
评论
1 楼 lifc 2010-08-09  
感觉vm.dirty_*可能比较关键,但个人以为这类需求考虑用Circular buffer推送给独立线程去异步提交或许更合适,因为直接调整vm回写门限还会影响到其他方面(比如回写频率提高后磁头调度效果变差,长期运转噪声和发热量会有少许提高)。

相关推荐

    Oracle数据库优化之数据库磁盘IO

    "Oracle数据库优化之数据库磁盘IO" Oracle数据库优化之数据库磁盘IO是指数据库管理员和开发者对Oracle数据库进行优化,以提高数据库的性能和稳定性。数据库磁盘IO是影响数据库性能的重要因素之一,因此优化数据库...

    windows下如何查看磁盘IO性能

    查看磁盘IO性能

    linux查看磁盘IO情况.docx

    Linux 查看磁盘 IO 情况命令详解 Linux 系统中,磁盘 IO 情况的查看对于系统性能的优化和问题诊断至关重要。本文将详细介绍 Linux 中查看磁盘 IO 情况的命令,包括 top、iostat 和 vmstat 等命令。 1. top 命令 ...

    工作经验:windows服务器下磁盘IO性能监控和分析报告

    在IT领域,尤其是在服务器管理中,对系统的性能监控至关重要,特别是磁盘I/O性能的监控。本报告聚焦于一个特定的场景,即在一台DELL R720服务器上运行Windows Server 2012时遇到的性能问题,通过监控和分析发现了...

    易语言WMI磁盘IO性能监控易语言源码.rar

    易语言WMI磁盘IO性能监控易语言源码.rar 易语言WMI磁盘IO性能监控易语言源码.rar 易语言WMI磁盘IO性能监控易语言源码.rar 易语言WMI磁盘IO性能监控易语言源码.rar 易语言WMI磁盘IO性能监控易语言源码.rar ...

    磁盘IO原理讲解以及开销

    ### 磁盘IO原理与开销详解 #### 一、磁盘物理结构解析 磁盘作为计算机系统中重要的持久化存储设备,在了解其工作原理之前,首先要掌握磁盘的基本物理结构。 - **磁盘面**:现代硬盘通常由多层磁盘面组成,每个磁...

    cacti监控磁盘IO

    cacti监控磁盘IO

    AIX系统磁盘IO监控与评估

    AIX 系统磁盘IO 监控 评估 AIX系统磁盘IO性能评估 2 一, 对磁盘IO的性能考虑, 裸设备优缺点分析 2 1.1 对磁盘IO的性能考虑 2 1.2 裸设备的优点 2 1.3 裸设备的缺点 2 二, IOSTAT工具使用 3 2.1 参数与用法 3 2.2 ...

    iostat 监视磁盘操作,磁盘IO

    本篇文章将详细介绍`iostat`命令及其相关的磁盘IO指标。 `iostat`是System Activity Reporter (SAR)工具集的一部分,通过收集和分析系统统计信息来报告CPU和I/O设备的使用情况。在`iostat`的输出中,有多个关键指标...

    zabbix监控磁盘IO性能

    该模版是zabbix用于磁盘IO性能监控,包括各项指标以及相应的图形

    linux 查看磁盘IO状态操作指南.docx

    Linux 查看磁盘IO状态操作指南 Linux 中查看磁盘IO状态的操作指南是非常重要的,因为磁盘IO状态的变化可能会影响系统的性能。iostat 命令是查看磁盘IO状态的常用命令,本文将对 iostat 命令的结果进行解释,并对 ...

    DiskCountersView(windows磁盘IO查看)

    DiskCountersView,windows磁盘IO查看器。绿色方便,无需安装。

    显示进程的磁盘IO操作

    在IT系统监控与调试过程中,了解进程的磁盘IO操作是非常关键的一环,这有助于我们诊断性能瓶颈,优化系统资源的使用。本文将详细讲解如何查看进程的磁盘读写情况,以及涉及到的相关工具和方法。 首先,"显示进程的...

    磁盘IO占用测试工具

    网吧无盘服务器磁盘IO占用测试工具。。很方便看你的每块硬盘的工作压力!

    windows磁盘io测试工具

    找到这个资源,是因为在windows服务器上,发现同样的程序,在机器1上写日志极快,另一台上极慢(导致请求响应超时)。后来用该工具测试,发现io差距好几倍

    磁盘io插件nagios

    磁盘I/O(Input/Output)是计算机系统中至关重要的组成部分,它关乎着系统的整体性能。在IT运维中,对磁盘I/O的监控显得尤为关键,因为任何I/O瓶颈都可能导致应用程序响应变慢,甚至影响整个系统的稳定运行。Nagios...

    磁盘IO检测工具

    这个没什么好说的了, DB服务器的性能好不好大部分是看IO的。

    磁盘IO检查工具CrystalDiskMark

    **磁盘IO检查工具CrystalDiskMark详解** 在IT领域,磁盘I/O(输入/输出)性能是评估计算机系统性能的重要指标之一。特别是在数据库管理、服务器优化和存储系统设计中,磁盘I/O的快慢直接影响到系统的整体响应速度。...

    sysbench进行cpu,磁盘IO,内存,OLTP基准测试

    sysbench进行cpu,磁盘IO,内存,OLTP基准测试, 一sysbench-05安装 二用法下面的测试案例需要用到这些说明才能看的懂的 三开始测试 cpu性能测试 线程测试 磁盘IO性能测试 内存测试 OLTP测试

Global site tag (gtag.js) - Google Analytics