磁盘I/O瓶颈的解决方法

如果您的Linux服务器出现故障,您的第一步通常是在终端中使用top命令来检查平均负载。

但是,有时会top命令显示非常高的平均负载,即使CPU的us和CPU的id的度数比较低也是如此。

如果CPU单核的负载超过1,但CPU显示大约70%空闲。这种情况的常见原因之一是磁盘I/O瓶颈。

存储I/O是物理磁盘或其他存储,例如磁盘或SSD。输入/输出(或写入/读取)的操作。

在Linux服务器可以使用一些终端命令行工具,例如top、atop和iotop来确认磁盘I/O是否正在降低应用程序性能。

当您运行top命令,您将首先浏览右上角检查平均负载。在这种情况下,它非常高。

接下来,我们很可能会浏览顶部附近的CPU和内存,然后是%CPU和%MEM列,以了解哪些进程使用的资源最多。

在top,您还需要查看wa,它几乎一直是0.0%。值始终高于1%可能表示您的存储设备速度太慢,无法跟上IO的请求。

值得注意的是,top命令顶部%Cpu(s)行的wa是多个核心wa的平均值,可以按1键来展开视图,查看每个CPU核心wa值。

接下来,使用atop,我们看到存储设备DSK行的busy的值在90%到100%。这是一个严重的瓶颈。在Web服务导致结果就是HTTP请求被阻塞,直到磁盘I/O可以赶上。

在atop,按d键盘查看正在使用磁盘I/O的进程。这里我们看到MySQL、Nginx、PHP-FPM,这些都是web服务核心进程。

要降低web服务磁盘IO,可以考虑将Nginx或Apache、MySQL和PHP-FPM的访问日志和错误日志不要过于频繁地写入磁盘。

并且避免将缓存(例如Nginx缓存)存储在磁盘。高并发流量环境。除了LEMP服务之外。

还要注意flush-8:0(一个PHP缓存问题)和jbd2/sda5-8(跟踪到访问/内核日志)及其进程。

此时,如果可以,你应该在Linux服务器上执行一个快速SSD基准测试,以了解磁盘IO的速度。

运行命令ddif=/dev/zeroof=diskbenchbs=1Mcount=1024conv=fdatasync。

ddif=/dev/zeroof=diskbenchbs=1Mcount=1024conv=fdatasync1073741824bytes(1.1GB)copied,46.0156s,23.3MB/s尽管可以减少读/写,但磁盘I/O非常慢。如果MySQL的my.cnf的max_connections设置太高。

就会导致MySQL连接和查询堆积并增长到超出可用服务器RAM的范围。它就会发展到Linux内核OOM杀死MySQL的地步。

通常MySQL最大的连接数等于最大分配内存除以每个线程缓冲区的大小。

iotop命令监控Linux内核输出的I/O使用信息。它显示系统进程或线程的当前I/O使用情况,运行命令iotop-oPa。

iotop-oPaiotop命令-o选项仅显示正在执行I/O的进程或线程,而不是显示所有进程或线程。这可以通过按o键动态切换。

-P选项仅显示进程。通常iotop命令显示所有线程。-a选项显示累积的I/O而不是带宽。

在这种模式下,iotop命令显示自iotop命令启动以来完成的I/O进程的数量。

查看DISKWRITE列,这些数字不是很大。合理平均速度的存储设备不会忙于一些内核日志记录和磁盘缓存。

但是在低于25MB/s的写入速度时,磁盘IO就会被Nginx缓存、内核日志、访问日志等操作使用最大化。要解决这类问题,是用性能更好的存储设备替换现有的设备。

THE END
1.固态硬盘的数据加密密钥获取恢复方法和数据读写方法与流程根据获取的所述数据加密密钥dek对写入的数据进行加密,或者,对读取的加密数据进行解密。 [0033] 本申请实施例还提供了一种固态硬盘的数据加密密钥恢复方法,所述方法可以包括: [0034] 在确定所述固态硬盘内放入主控芯片后,重新生成固态硬盘的主控芯片管理密钥; ...https://www.xjishu.com/zhuanli/55/202011460780.html
2.EVS存储设备硬盘状态分析%rrqm和%wrqm:这两个参数分别表示合并读取和写入请求的百分比,如果数值异常高或持续增加,可能表明磁盘存在请求合并问题。 原因分析: sds硬盘性能不足导致存储设备异常报警 解决方案: 更换硬盘 问题与总结: 通过分析硬盘的健康状态和性能可分析查看出硬盘的使用情况,进一步快速确定问题原因...https://support.dahuatech.com/dataSectionDetail/bf45f7bdeea1476aba390320672ab46e
1.磁盘指标OS 磁盘写入操作次数/秒:每秒在 OS 磁盘中写入的输出操作的次数。 数据磁盘延迟(预览版):监视数据磁盘期间完成 IO 的平均时间。 值以毫秒为单位。 数据磁盘队列深度:当前未完成的等待在数据磁盘中读取或写入的 IO 请求数。 数据磁盘读取字节数/秒:每秒从数据磁盘中读取的字节数。 如果启用了只读或读/写磁盘缓存...https://docs.microsoft.com/zh-cn/azure/virtual-machines/disks-metrics?view=vs-2017
2.磁盘处理读取或写入请求的时间百分比为100.使用过程中特别卡...bois恢复出厂默认,如果你的PE是老版本的,要把硬盘接口改成Controller或IDE,要是WIN7的PE,就改成AHIC,...https://ask.zol.com.cn/x/4169793.html
3.监控显示硬盘数据库发生错误数据库可能已损坏建议备份硬盘录像...磁盘 监视cpu: %processor time :cup执行进程所有的时间,如果值持续在80%-90%的状态,可能表明需要升级cpu或需要增加更多的处理器 %user time :处理器执行用户进程所用的时间的百分比,该指标数应当尽量低 %privileged time:处理器炒作系统的内核命令(如sqlserver i/o请求)所用的时间百分比,该值尽可能低 ...https://blog.51cto.com/u_16099211/12606873
4.Iometer存储测试工具参数说明图形主界面(整理)当前测试规则的读取/写入比率,比如66%读取的同时34%为写入,打个比方,我们的操作系统运行时在读取的时候,后台也在写入。 4)Percent Random/Sequential Distribution (测试请求的随机/持续比例) 随机和持续占的百分比,比如测4KB随机80%的同时测4KB持续20%。 https://www.jianshu.com/p/8d76de1679de
5.Oppo百万级高并发mongodb集群性能数十倍提升优化实践3. 一个链接一个线程,该线程除了负责网络收发外,还负责写数据到存储引擎,整个网络I/O处理和磁盘I/O处理都由同一个线程负责,本身架构设计就是一个缺陷。 2.2.2 网络线程模型优化方法 为了适应高并发的读写场景,mongodb-3.6开始引入serviceExecutor: adaptive配置,该配置根据请求数动态调整网络线程数,并尽量做到网络...https://tech.southcn.com/node_1ac4f21108/442c3b9f2e.shtml
6.翔安区社会监控资源联网共享二期项目附件c.投标人的CA证书或外包装应标记“项目名称、项目编号、投标人的全称”等内容,以方便识别、使用。 d.投标人的CA证书应能正常、有效使用,否则产生不利后果由投标人承担责任。 ⑥关于投标截止时间过后 a.未按招标文件规定提交投标保证金的,其投标将按无效投标处理。 http://ccgp-xiamen.gov.cn/upload/document/20221111/78a36cf8832941aa9e9e15d67bd6b723.html
7.技能篇:linux服务性能问题排查及jvm调优思路linux 内存里的 Cached 是从磁盘读取文件的页缓存,也就是用来缓存从文件读写的数据。下次访问这些文件数据时,则直接从内存中快速获取,而不再次访问磁盘 磁盘性能指标 使用率,是指磁盘处理 I/O 的时间百分比。过高的使用率(比如超过 80%),通常意味着磁盘 I/O 存在性能瓶颈。 https://cloud.tencent.com/developer/article/1988361
8.面试题总结自适应自旋锁:意味着自旋时间或次数不再固定,而是由前一次的状态来决定。 1.6 简述一下BIO、AIO和NIO的区别 1>BIO是同步阻塞通信 服务器实现模式为一个连接一个线程:客户端有连接请求时服务器端就需要启动一个线程进行处理。如果这个连接不做任何事情会造成不必要的线程开销。 https://maimai.cn/article/detail?fid=1715494134&efid=beSDegNPWCkpQeec6i5ijw
9.>第4章管理OracleSolarisZFS存储池可以使用全路径(如/dev/dsk/c1t0d0)或构成/dev/dsk目录中设备名称的缩略名称(如c1t0d0)来指定磁盘。例如,以下是有效的磁盘名称: c1t0d0 /dev/dsk/c1t0d0 /dev/foo/disk 创建ZFS 存储池的最简单方法是使用整个物理磁盘。在从磁盘片、硬件 RAID 阵列中的 LUN 或基于软件的卷管理器所提供的卷中生成池时,无...https://docs.oracle.com/cd/E19253-01/819-7065/gavwn/index.html