当前位置:网站首页 >  攻略

零门槛优化服务器通用读写延迟实操全指南看完立即降低延迟

时间:2026年06月04日 09:50:12 来源:易频IT社区

第一步:先定位延迟原因,别瞎优化

先查当前磁盘I/O负载,找到具体瓶颈再动手,避免做无用功。

1.1 安装I/O诊断工具iotop、iostat

所有主流Linux发行版通用安装命令:

```bash CentOS/RHEL 7-9 sudo yum install -y sysstat iotop Ubuntu/Debian 18-24 sudo apt update && sudo apt install -y sysstat iotop ```

1.2 实时诊断延迟根因

  • 查实时读写进程:终端执行sudo iotop -o(只显示有I/O活动的进程),重点看%IO列,超过80%的进程就是主要瓶颈
  • 查磁盘等待时间:终端执行sudo iostat -x 1(每1秒刷新一次,x显示扩展统计),重点观察:
    • %util:磁盘利用率,超过90%说明磁盘饱和
    • await:平均I/O请求等待时间(包括队列+处理),SSD超过5ms、HDD超过20ms说明延迟高
    • svctm:磁盘平均处理时间,SSD超过1ms、HDD超过10ms说明磁盘本身性能不足

第二步:软件层面通用零门槛优化

不管是SSD还是HDD,先做软件优化,成本最低。

2.1 关闭不必要的后台进程和服务

后台进程会抢占I/O资源,先关没用的:

  • 临时关闭服务:比如MySQL/Redis测试服不用的话,执行sudo systemctl stop mysql redis
  • 永久关闭开机自启:执行sudo systemctl disable mysql redis
  • 查开机自启列表:执行sudo systemctl list-unit-files --type=service --state=enabled,逐个排查非必要的关闭

2.2 调整Linux磁盘I/O调度算法

不同场景用不同算法,通用SSD优先选mq-deadline,HDD优先选bfq

  • 先看当前调度算法:执行cat /sys/block/sda/queue/scheduler(sda换成你的磁盘名,可通过df -h看挂载对应的磁盘)
  • 临时修改(重启失效,适合测试)
    • SSD:echo mq-deadline | sudo tee /sys/block/sda/queue/scheduler
    • HDD:echo bfq | sudo tee /sys/block/sda/queue/scheduler
  • 永久修改(重启生效)
    • 编辑grub配置文件:sudo vim /etc/default/grub
    • 找到GRUB_CMDLINE_LINUX_DEFAULT这一行,在引号内末尾添加:elevator=mq-deadline(SSD)或elevator=bfq(HDD),注意前面加空格
    • 完整示例(SSD版):GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=mq-deadline"
    • 更新grub配置: ```bash CentOS/RHEL sudo grub2-mkconfig -o /boot/grub2/grub.cfg Ubuntu/Debian sudo update-grub ```
    • 重启服务器:sudo reboot

2.3 调整Linux内存缓存策略(适用于读多写少场景)

零门槛优化服务器通用读写延迟实操全指南看完立即降低延迟

读多写少(比如Web静态资源服务器、CDN节点)可以增大内存缓存比例:

  • 临时修改(重启失效): ```bash 调整脏页阈值(内存中允许的脏数据比例),默认10%读多写少可设为20% echo 20 | sudo tee /proc/sys/vm/dirty_ratio 调整后台开始回写脏页的阈值,默认5%读多写少可设为15% echo 15 | sudo tee /proc/sys/vm/dirty_background_ratio 调整脏数据过期时间,默认30秒读多写少可设为60秒 echo 6000 | sudo tee /proc/sys/vm/dirty_expire_centisecs 调整后台回写间隔,默认5秒读多写少可设为10秒 echo 1000 | sudo tee /proc/sys/vm/dirty_writeback_centisecs ```
  • 永久修改(重启生效)
    • 编辑sysctl配置文件:sudo vim /etc/sysctl.conf
    • 在文件末尾添加完整可复制内容: ```bash 读多写少场景内存缓存优化 vm.dirty_ratio = 20 vm.dirty_background_ratio = 15 vm.dirty_expire_centisecs = 6000 vm.dirty_writeback_centisecs = 1000 ```
    • 加载配置:sudo sysctl -p

2.4 调整Linux内存缓存策略(适用于写多读少场景)

写多读少(比如日志服务器、数据库写入节点)要减少脏页积压,避免突然大流量I/O:

  • 临时修改(重启失效): ```bash echo 5 | sudo tee /proc/sys/vm/dirty_ratio echo 2 | sudo tee /proc/sys/vm/dirty_background_ratio echo 1500 | sudo tee /proc/sys/vm/dirty_expire_centisecs echo 300 | sudo tee /proc/sys/vm/dirty_writeback_centisecs ```
  • 永久修改(重启生效)
    • 编辑sysctl配置文件:sudo vim /etc/sysctl.conf
    • 在文件末尾添加完整可复制内容: ```bash 写多读少场景内存缓存优化 vm.dirty_ratio = 5 vm.dirty_background_ratio = 2 vm.dirty_expire_centisecs = 1500 vm.dirty_writeback_centisecs = 300 ```
    • 加载配置:sudo sysctl -p

第三步:硬件/挂载层面补充优化

3.1 挂载时添加noatime、nodiratime参数

Linux默认每次读文件/目录都会更新访问时间(atime),会产生大量无用写I/O,关闭后延迟明显降低:

  • 先看当前挂载参数:执行mount,找到你的数据盘挂载行
  • 临时修改(重启失效,适合测试):比如数据盘挂载在/data,执行sudo mount -o remount,noatime,nodiratime /data
  • 永久修改(重启生效)
    • 编辑fstab配置文件:sudo vim /etc/fstab
    • 找到数据盘对应的行,在第四列(挂载参数)添加noatime,nodiratime,多个参数用逗号分隔
    • 完整示例(ext4格式SSD挂载/data):/dev/sda1 /data ext4 defaults,noatime,nodiratime 0 2
    • 测试挂载是否成功:sudo mount -a,如果没有报错说明配置正确

3.2 确认SSD已开启TRIM(仅SSD适用)

TRIM可以让SSD提前擦除无效数据,减少写入时的延迟,主流Linux发行版默认已开启,确认一下:

  • 检查是否支持TRIM:执行sudo fstrim / --dry-run,如果显示类似/: 2.3 GiB (2462347264 bytes) trimmed说明支持
  • 检查是否开启定时TRIM: ```bash 检查fstrim.timer状态 sudo systemctl status fstrim.timer ```
  • 如果没开启,手动开启: ```bash sudo systemctl enable --now fstrim.timer ```

第四步:快速验证优化效果

用dd命令测试读写速度,对比优化前后的结果:

  • 测试写入速度(避开缓存,真实反映磁盘性能): ```bash 创建1G大小的测试文件,直接写入磁盘(oflag=direct),块大小4k(匹配常见文件系统块大小) sudo dd if=/dev/zero of=/data/test_write bs=4k count=256000 oflag=direct ```
  • 测试读取速度(清空缓存后真实反映): ```bash 清空内存缓存 sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches 读取刚才创建的测试文件,直接从磁盘读(iflag=direct) sudo dd if=/data/test_write of=/dev/null bs=4k count=256000 iflag=direct ```
  • 清理测试文件sudo rm -f /data/test_write

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图