内存和cpu占用都不高,为什么软件速度还是很慢?一行指令测试你拖后腿的硬盘吧

前言

有个做外卖平台的客户, 老是喊网站卡住了,不能运营了。让帮忙处理服务器里的垃圾,结果看CPU和硬盘占用都不多
在这里插入图片描述
每天访问也不是很大
在这里插入图片描述

最终核对的情况是因为它服务器硬盘读写速度太慢, 导致数据库的数据读取和写入缓慢,最终导致用户使用体验不佳。

直接测试一下硬盘读写速度

dd if=/dev/zero of=tempfile bs=1M count=100 conv=fdatasync,notrunc status=progress && rm -f tempfile

这个命令解释如下:

if=/dev/zero 表示输入文件是/dev/zero,这是一个特殊的文件,提供无限的0。
of=tempfile 表示输出文件是当前目录下的tempfile。
bs=1M 表示以1MB为单位进行读写。
count=100 表示复制100个单位,因为单位是1MB,所以总共是100MB。
conv=fdatasync 表示在完成写操作后同步硬盘数据,确保数据的准确性。
notrunc 表示不截断输出文件。
status=progress 表示显示进度信息。

在这里插入图片描述
我们可以看到测试100m的文件读写速度是0.998097 s, 没秒速度:105 MB/s

再对比下我自己的服务器
在这里插入图片描述
我的速度是:0.153625 s, 683 MB/s

这个差距就出来了。

所以大家别光顾着无脑升级cpu和内存、网络。 也要注意一下硬盘读写速度,如果它拖后腿了, 程序运行也会不流畅的!

下面由CHATGPT深入解释一下 硬盘IO对程序运行速度的影响

硬盘IO(输入/输出)是指硬盘与计算机系统之间数据传输的过程。硬盘IO性能对程序运行速度有着直接和深远的影响,特别是对于那些需要频繁读写磁盘的应用程序。以下是硬盘IO对程序运行速度影响的几个关键方面:

1. 数据访问延迟

硬盘的读写速度远低于内存的读写速度,因此当程序需要从硬盘读取数据或向硬盘写入数据时,都会产生显著的延迟。特别是机械硬盘(HDD)由于其物理旋转盘片和移动读写头的特性,访问数据时的延迟更加明显。即使是固态硬盘(SSD)虽然速度较快,但与内存相比也存在延迟。这种延迟会导致程序等待IO操作完成,从而影响整体运行速度。

2. IO等待时间

当程序执行大量的硬盘IO操作时(例如,数据库操作、文件读写等),CPU可能需要在IO操作完成前等待,这称为IO等待时间。在这段时间内,CPU不能执行其他任务,或者不得不切换到其他较少依赖IO的任务。高IO等待时间意味着CPU资源没有得到充分利用,进而影响程序的执行效率和响应速度。

3. 系统资源竞争

在多任务环境中,多个程序可能会同时进行硬盘IO操作,这会导致系统资源的竞争。当多个进程试图同时访问硬盘时,操作系统需要管理这些请求,决定哪个进程先访问硬盘。这种竞争状态可以导致硬盘IO请求的排队,增加了数据访问的延迟,从而影响到各个程序的运行速度。

4. 缓存和缓冲区的影响

操作系统通常会使用缓存和缓冲区技术来减少硬盘IO对程序运行速度的负面影响。通过预先加载数据到快速访问的内存中,或者将写入操作暂存到缓冲区中,可以减少对实际硬盘IO的需求。然而,当缓存和缓冲区达到其容量限制时,仍然需要访问硬盘,此时硬盘的性能就成为了瓶颈。

5. 硬盘类型的影响

硬盘类型(HDD vs. SSD)对程序运行速度也有重要影响。SSD由于其基于闪存的特性,提供了更高的读写速度和更低的访问延迟,特别适合那些需要频繁进行大量数据读写操作的应用。相比之下,HDD因其机械特性,在随机读写操作上表现不佳,更适合大容量存储和顺序读写操作。

结论

综上所述,硬盘IO是影响程序运行速度的一个重要因素。优化硬盘IO性能,如使用SSD、增加内存以允许更大的缓存、合理安排硬盘IO操作等,都是提高程序运行效率和响应速度的有效方法。在设计和开发软件时,考虑和优化硬盘IO的使用是非常重要的。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈钇谷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值