重要提醒:Linux 系统本身会自动管理缓存,频繁强制释放内存(每小时)会降低服务器性能,会反复读写硬盘;优先排查内存泄漏(PHP/MySQL 配置),不要依赖定时清理。
方案一:使用宝塔自带【释放内存】(最简单,推荐新手)
1. 登录宝塔 → 左侧菜单 计划任务
2. 点击【添加任务】
3. 任务类型:选择 释放内存
4. 任务名称:每小时释放内存(自定义)
5. 执行周期: 下拉选择:每 → 1 → 小时,分钟填 00 ✅ 含义:每个整点执行一次
6. 执行用户保持 root,点击【添加任务】
宝塔自带释放内存:会重启 PHP-FPM、MySQL、Nginx 等服务来回收进程内存; 缺点:执行瞬间网站会短暂卡顿。
方案二:Shell 脚本清理系统缓存(不重启服务,冲击更小)
适合不想重启服务,只清理 buff/cache 缓存
1. 计划任务 → 添加任务
2. 任务类型:Shell脚本
3. 任务名称:每小时清理系统缓存
4. 执行周期:每 1 小时,00 分
5. 脚本内容粘贴下面代码:
bash
#!/bin/bashsyncsyncecho 1 > /proc/sys/vm/drop_caches
说明:echo 1 只清理页缓存(相对温和)echo 3 清理全部缓存,负载高时慎用
进阶智能脚本(推荐!达到阈值才清理,不盲目每小时执行)
只有内存不足时才释放,避免无效操作:
bash
#!/bin/bash# 可用内存阈值,单位MB,低于该值才清理limit=500avail=$(free -m | awk 'NR==2{print $7}')if [ $avail -lt $limit ];then sync echo 1 > /proc/sys/vm/drop_caches echo "[$(date)] 内存低于${limit}MB,已清理缓存,当前可用:${avail}MB" >> /www/wwwlogs/mem_clean.logfi
设置完成后测试
添加任务后,点右侧【执行】手动运行一次,查看日志是否正常执行。
⚠️风险与优化建议
1. 不建议生产环境每小时强制释放,最低建议 2~4 小时一次;
2. 如果内存持续爆满,治本方案: 调低 PHP 并发、调整 mysql 缓冲池大小
a. 检查是否有定时爬虫、程序内存泄漏
b. 内存小于 2G 服务器建议创建 Swap 虚拟内存
3. 宝塔自带「释放内存」会重启服务,流量高峰时段不要执行!

