前天,发现新上的服务暴露了一个问题,有经常一阵阵的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
分享到:
相关推荐
"Oracle数据库优化之数据库磁盘IO" Oracle数据库优化之数据库磁盘IO是指数据库管理员和开发者对Oracle数据库进行优化,以提高数据库的性能和稳定性。数据库磁盘IO是影响数据库性能的重要因素之一,因此优化数据库...
查看磁盘IO性能
Linux 查看磁盘 IO 情况命令详解 Linux 系统中,磁盘 IO 情况的查看对于系统性能的优化和问题诊断至关重要。本文将详细介绍 Linux 中查看磁盘 IO 情况的命令,包括 top、iostat 和 vmstat 等命令。 1. top 命令 ...
在IT领域,尤其是在服务器管理中,对系统的性能监控至关重要,特别是磁盘I/O性能的监控。本报告聚焦于一个特定的场景,即在一台DELL R720服务器上运行Windows Server 2012时遇到的性能问题,通过监控和分析发现了...
易语言WMI磁盘IO性能监控易语言源码.rar 易语言WMI磁盘IO性能监控易语言源码.rar 易语言WMI磁盘IO性能监控易语言源码.rar 易语言WMI磁盘IO性能监控易语言源码.rar 易语言WMI磁盘IO性能监控易语言源码.rar ...
### 磁盘IO原理与开销详解 #### 一、磁盘物理结构解析 磁盘作为计算机系统中重要的持久化存储设备,在了解其工作原理之前,首先要掌握磁盘的基本物理结构。 - **磁盘面**:现代硬盘通常由多层磁盘面组成,每个磁...
cacti监控磁盘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`是System Activity Reporter (SAR)工具集的一部分,通过收集和分析系统统计信息来报告CPU和I/O设备的使用情况。在`iostat`的输出中,有多个关键指标...
该模版是zabbix用于磁盘IO性能监控,包括各项指标以及相应的图形
Linux 查看磁盘IO状态操作指南 Linux 中查看磁盘IO状态的操作指南是非常重要的,因为磁盘IO状态的变化可能会影响系统的性能。iostat 命令是查看磁盘IO状态的常用命令,本文将对 iostat 命令的结果进行解释,并对 ...
DiskCountersView,windows磁盘IO查看器。绿色方便,无需安装。
在IT系统监控与调试过程中,了解进程的磁盘IO操作是非常关键的一环,这有助于我们诊断性能瓶颈,优化系统资源的使用。本文将详细讲解如何查看进程的磁盘读写情况,以及涉及到的相关工具和方法。 首先,"显示进程的...
网吧无盘服务器磁盘IO占用测试工具。。很方便看你的每块硬盘的工作压力!
找到这个资源,是因为在windows服务器上,发现同样的程序,在机器1上写日志极快,另一台上极慢(导致请求响应超时)。后来用该工具测试,发现io差距好几倍
磁盘I/O(Input/Output)是计算机系统中至关重要的组成部分,它关乎着系统的整体性能。在IT运维中,对磁盘I/O的监控显得尤为关键,因为任何I/O瓶颈都可能导致应用程序响应变慢,甚至影响整个系统的稳定运行。Nagios...
这个没什么好说的了, DB服务器的性能好不好大部分是看IO的。
**磁盘IO检查工具CrystalDiskMark详解** 在IT领域,磁盘I/O(输入/输出)性能是评估计算机系统性能的重要指标之一。特别是在数据库管理、服务器优化和存储系统设计中,磁盘I/O的快慢直接影响到系统的整体响应速度。...
sysbench进行cpu,磁盘IO,内存,OLTP基准测试, 一sysbench-05安装 二用法下面的测试案例需要用到这些说明才能看的懂的 三开始测试 cpu性能测试 线程测试 磁盘IO性能测试 内存测试 OLTP测试