适用场景
调优要按负载类型来,别抄网上的「万能参数」。数据库、Web、消息队列关注点完全不同。正确做法是:先量化瓶颈,再改一到两个参数,改完复测,能回滚。
配置步骤(文件系统与 inode 治理)
# 1) 容量与 inode 同时看
df -hT
df -i
# 2) 找小文件大户
find / -xdev -type f -size -4k 2>/dev/null | awk -F/ '{print "/"$2"/"$3}' | sort | uniq -c | sort -rn | head
# 3) 找大文件
du -ah /var 2>/dev/null | sort -hr | head -20
# 4) 常用挂载参数(示例,需结合业务)
# /etc/fstab
# UUID=xxx /data xfs defaults,noatime 0 0
# 5) 删除海量小文件(避免 ls 卡死)
# 用 find -delete 或 rsync --delete 空目录,谨慎操作
find /data/cache -type f -mtime +30 -delete
# 6) 开放文件被删但空间不释放
lsof +L1 | head
关键参数与建议
- 先测再调:用基线数据(CPU/内存/IO/网络)确认瓶颈在哪一层
- 一次一改:一次只改少量参数,改完复测,保留回退路径
- sysctl 基线:连接跟踪、文件句柄、TCP 队列、内存回收策略按业务调
- 文件系统:数据库用 XFS 或 ext4 按厂商建议,挂载参数不要乱加 noatime
- inode 治理:小文件多的目录要单独监控 inode,磁盘没满也可能写不进去
- 磁盘水位:数据盘 75% 预警,日志盘 80% 预警
- IO 调度:SSD/NVMe 用 none/mq-deadline,机械盘按场景选择
- 记录:调优参数写进配置管理,别只在内存里生效(重启就丢)
容易踩的坑
- 磁盘没满但写不进去:inode 用光了
- 直接 rm -rf 海量文件目录,IO 打满影响业务
- 开放文件被删但进程没重启,空间不释放
- 在业务目录上跑 find,把磁盘 IO 拉满
- ext4 默认 inode 数量不足,小文件场景只能重建文件系统
- 只监控磁盘容量,不监控 inode
验证与巡检
df -h | awk 'NR==1 || $5+0 > 75'
df -i | awk 'NR==1 || $5+0 > 60'
lsof +L1 | head -5
# 阈值:容量 < 75%、inode < 60%
- 巡检:容量与 inode 双水位达标、无异常开放删除文件、清理任务有日志
小结
调优验收:每个改动的参数都有基线数据、有效果对比、可回滚方式,并且写进了配置管理。拍脑袋改参数等于埋雷。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。