linux系统%sy值过高的问题

本文详细记录了解决数据库假死现象的过程,通过监控发现操作系统层面的%sy值上涨导致应用程序无响应,深入分析后确认是由于页交换问题引起。通过调整设置禁止在swap分区发生页交换,并优化SQL语句,最终解决了数据库性能问题。
最近在监控数据库的过程中发现,在操作系统层面top里面%sy值在不断的上涨,最严重的时候
%sy+%us达到100%,%id几乎为0了,直接结果就是数据库出现假死现象,应用程序无响应,之后查
了很多资料,发现一篇文章中陈述的现象跟我们的很类似,操作系统也是linux,说linux在处理页交换
上面有BUG,在aix和unix上都没这种现象,处理方法就是禁止在swap分区发生页交换,之后在测试库上
作了相应的调整,具体效果,有待进一步观察。
而正式库上经过一段时间的观察,发现造成%sy上涨的进程是oracle进程,而且会持续很长时间,最后到
数据库里捕捉相应的sql语句,却抓不出来,没办法,拉了一份awr报告,发现top5里面有direct path
read事件,难怪抓不到对应的sql语句,对物理读高的,排序操作多的sql
语句进行了彻底的优化,之后就没有再出现这种情况,仅此记录一下。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25618347/viewspace-711844/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25618347/viewspace-711844/

<think>我们正在处理用户关于Linux负载平均的故障排除问题。根据引用内容,负载可能由多种因素引起,包括CPU使用率、I/O等待(iowait)等。用户提供的引用中特别提到了iowait的排查方法,以及如何识别导致负载的进程。关键点:1.负载平均(load average)表示系统中可运行和不可中断(阻塞)进程的平均数量。例如,引用[3]提到:“负载是系统中正在运行和阻塞进程的总量。例如,如果两个进程正在运行,五个进程被阻塞,那么系统的负载将是七。”2.iowait(如引用[2]和[4]所述)是导致负载的常见原因。iowait表示CPU等待I/O操作完成的时间百分比。在top命令的输出中,如果wa(I/O Wait)的,说明系统可能正在经历I/O瓶颈。3.排查步骤:a.使用top命令查看整体情况,特别是Cpu(s)行中的wa(引用[4])。b.使用ps命令查找处于运行(R)或不可中断睡眠(D)状态的进程(引用[3])。c.使用iostat、iotop等工具进一步分析I/O情况。因此,我们的回答应该包括:1.解释负载平均的含义。2.介绍排查步骤,包括检查CPU使用率(特别是iowait)、内存使用、I/O情况等。3.提供具体命令和解释。4.根据引用内容,给出可能导致负载的常见原因(如I/O瓶颈)以及解决方案建议。同时,按照用户要求,我们需要在回答末尾生成相关问题。注意:引用内容中提到的工具和命令(如top、ps、http_load等)可以适当提及。回答结构:1.解释负载平均(LoadAverage)2.负载的可能原因3.排查步骤(重点在iowait的排查)4.解决方案建议5.生成相关问题</think>### Linux 负载平均故障排除指南 #### 1. 理解负载平均 Linux 负载平均表示系统中**可运行进程**和**不可中断进程**(如等待I/O)的总量。计算公式为: $$ \text{Load Average} = \frac{\text{运行中进程数} + \text{等待进程数}}{\text{CPU核心数}} $$ 例如:4核CPU上负载为8表示系统满负荷运行[^3]。 #### 2. 排查步骤 **a. 确认负载类型** ```bash top - 14:31:20 Cpu(s): 2.3%us, 1.7%sy, 96.0%wa # 关键看wa(I/O等待) ``` - **wa**:I/O瓶颈(如磁盘过载)[^4] - **us/sy**:CPU计算瓶颈 **b. 定位问题进程** ```bash ps -eo s,user,cmd | grep '^[RD]' # 查找运行中(R)或不可中断(D)的进程 iotop # 实时监控I/O使用进程 ``` **c. 检查I/O性能** ```bash iostat -x 2 # 查看设备利用率(%util)和等待时间(await) ``` - 当 %util > 70% 或 await > 10ms 表明磁盘过载 #### 3. 常见原因与解决方案 | 问题类型 | 特征 | 解决方案 | |---------|------|---------| | **磁盘I/O瓶颈** | wa,%util>90% | 1. 优化数据库查询<br>2. 使用SSD替代HDD<br>3. 调整I/O调度器(`deadline`) | | **CPU过载** | us+sy>90% | 1. 分析CPU密集型进程(`perf top`)<br>2. 增加CPU核心<br>3. 限制进程资源(`cgroups`) | | **内存不足** | swap使用激增 | 1. 增加物理内存<br>2. 优化应用内存使用<br>3. 调整`swappiness`参数 | | **网络阻塞** | si | 1. 检查网络带宽(`nload`)<br>2. 优化TCP参数(`net.ipv4.tcp_tw_reuse`) | #### 4. 级诊断工具 - **压力测试**:`http_load`模拟请求[^5] - **性能分析**:`perf record`生成火焰图 - **内核跟踪**:`bpftrace`监控系统调用 ```bash # 监控磁盘I/O延迟 bpftrace -e 'tracepoint:block:block_rq_complete { @ = hist(args->duration); }' ``` > **关键提示**:负载>CPU核心数时需立即处理,持续负载可能导致系统僵死[^1]。长期监控建议使用`Prometheus+Grafana`建立报警阈
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值