SSD 替换 HDD:SSD 的随机读写性能比 HDD 快 100 倍以上,优先将系统盘和频繁读写的目录(如网站根目录、数据库文件)迁移至 SSD。
NVMe SSD:相比 SATA SSD,NVMe SSD 通过 PCIe 通道传输数据,带宽可达 3500MB/s 以上,适合高并发读写场景。
RAID 0:条带化提升读写性能(带宽叠加),但无冗余,适合对速度敏感且数据可恢复的场景(如缓存服务器)。
RAID 10:结合镜像与条带化,兼顾性能与可靠性,推荐用于数据库等高 IOPS 场景。
bash
# 创建RAID 10示例(需mdadm工具)mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
内存盘(tmpfs):将临时文件(如 Nginx 缓存、session 文件)存储到内存中,减少磁盘 IO。
bash
# 挂载512MB内存盘到/tmpmount -t tmpfs -o size=512m tmpfs /tmp
Intel Optane 缓存:混合硬盘(HDD+Optane)可将热点数据缓存到高速介质,提升整体性能。
XFS:现代 Linux ..,支持大容量存储和高并发,适合大文件读写(如视频站群)。
bash
# 格式化为XFSmkfs.xfs /dev/sda1
ext4:兼容性好,适合小文件为主的场景(如 WordPress 站群),需禁用日志以提升性能:
bash
# 挂载时禁用日志mount -o noatime,data=writeback /dev/sda1 /mnt
# /etc/fstab 中添加以下参数(根据场景调整)noatime # 禁用访问时间更新nodiratime # 禁用目录访问时间更新discard # 启用TRIM(SSD专用)barrier=0 # 禁用磁盘写入屏障(SSD推荐)
SSD/NVMe:使用 noop
或 mq-deadline
调度器(减少调度延迟)。
HDD:使用 bfq
或 deadline
调度器(优化旋转延迟)。
bash
# 查看当前调度器cat /sys/block/sda/queue/scheduler# 临时修改调度器echo mq-deadline > /sys/block/sda/queue/scheduler# ..修改(添加到 /etc/rc.local)echo mq-deadline > /sys/block/sda/queue/scheduler
# 增大文件描述符限制 fs.file-max = 1048576 # 调整VM参数 vm.dirty_ratio = 60 # 脏页占比上限(触发回写) vm.dirty_background_ratio = 20 # 后台回写脏页占比 vm.swappiness = 10 # 减少内存交换 vm.vfs_cache_pressure = 50 # 保留更多dentry/inode缓存
应用参数:
sysctl -p
# /etc/security/limits.conf 添加* hard nofile 1048576* soft nofile 1048576root hard nofile 1048576root soft nofile 1048576
# 启用FastCGI缓存(针对PHP站群)fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=phpcache:100m inactive=60m;fastcgi_cache_key "$scheme$request_method$host$request_uri";server { location ~ \.php$ { fastcgi_cache phpcache; fastcgi_cache_valid 200 302 1h; fastcgi_cache_valid 404 1m; }}
bash
# 使用Redis缓存示例(Python)import redis r = redis.Redis(host='localhost', port=6379)data = r.get('cache_key') or db.query(...)
# 定期执行TRIM(需支持ATA指令集)fstrim -a# 检查SSD健康状态smartctl -a /dev/sda
iostat:监控磁盘 IOPS 和吞吐量
bashiostat -x 1 # 每秒显示一次详细IO统计
iotop:实时监控进程 IO 消耗
bashiotop -o # 仅显示活跃进程
将 wp-content/uploads
目录挂载到 tmpfs 内存盘
使用 redis-cache
插件缓存数据库查询
配置 Nginx 的 expires
指令缓存静态资源
将 innodb_log_file_size
设为 2G 以上(减少日志写入次数)
配置 innodb_flush_log_at_trx_commit=2
(牺牲部分持久性提升性能)
将数据文件和日志文件分别放在不同物理磁盘
使用 squid
或 varnish
做 HTTP 层缓存
对静态 API 结果(如配置信息)进行客户端缓存(设置 Cache-Control 头)
# 使用dd测试顺序读写dd if=/dev/zero of=testfile bs=1M count=1000 conv=fdatasync # 写测试dd if=testfile of=/dev/null bs=1M count=1000 # 读测试# 使用fio测试随机读写fio --name=randwrite --ioengine=libaio --rw=randwrite --bs=4k --size=1G --numjobs=16 --iodepth=32 --runtime=60 --group_reporting
vmstat
、pidstat
等工具对比优化前后的系统负载:
bash
vmstat 1 # 每秒显示一次系统状态pidstat -u -d 1 # 监控进程CPU和IO使用
硬件优先:SSD 是提升 IOPS 的核心,NVMe+RAID10 组合可满足..性能需求
系统层调优:合理配置文件系统、I/O 调度器及内核参数
应用层缓存:利用 Nginx、Redis 等减少磁盘访问
持续监控:通过工具验证优化效果并调整策略
针对站群场景,建议重点优化 Nginx 缓存策略和数据库 IO 配置,同时定期执行磁盘维护以保持性能。
(声明:本文来源于网络,仅供参考阅读,涉及侵权请联系我们删除、不代表任何立场以及观点。)