外贸站宝塔面板服务器内存爆满清理缓存脚本
外贸站内存为什么容易爆满
外贸站运行过程中,PHP-FPM、MySQL、Redis等组件会产生大量缓存文件和日志,长期不清理容易导致内存占用飙升,甚至触发OOM(内存溢出)导致网站宕机。
本文针对宝塔面板环境,教你在不重装系统的前提下安全清理缓存。
准备:先确认内存状态
用SSH连接服务器,或者直接打开宝塔面板左侧的「终端」。
运行以下命令查看当前内存使用:
free -h
重点关注 available 列,如果低于200MB说明内存已吃紧。
同时可以运行 df -h 查看磁盘是否也被日志占满。
方法一:手动清理系统缓存(最直接)
直接在终端运行以下命令(需要root权限):
sync && echo 3 > /proc/sys/vm/drop_caches
作用:sync 把内存中的脏数据写回磁盘,echo 3 清理页缓存、目录项和索引节点缓存。
注意:执行后 free -h 的 buff/cache 会明显下降,但这是安全操作,不会丢失数据。
方法二:编写自动清理脚本(更省心)
在宝塔面板的「文件」里新建一个文件 /root/clean_cache.sh,粘贴以下内容:
#!/bin/bash
# 外贸站缓存清理脚本
# 用法:bash /root/clean_cache.sh
echo "开始清理缓存..."
sync
echo 3 > /proc/sys/vm/drop_caches
# 清理系统日志(保留最近3天)
find /var/log -name "*.log" -mtime +3 -exec rm -f {} \;
# 清除宝塔面板tmp临时文件(可选)
rm -rf /tmp/*_temp_*
echo "清理完成"
free -h
保存后赋予执行权限:
chmod +x /root/clean_cache.sh
方法三:添加计划任务定时执行
回到宝塔面板左侧「计划任务」,点击「添加任务」:
- 任务类型:Shell脚本
- 任务名称:清理缓存
- 执行周期:选择「每天」-「03:00」(凌晨访问低)
- 脚本内容:
bash /root/clean_cache.sh
点击确定。
之后每天凌晨会自动运行清理。
避坑指南
- 不要频繁清理:清理后会重新缓存,频繁执行反而增加I/O压力。建议每天一次即可。
- 检查是否有异常进程:如果清理后内存依然爆满,用
top -b -n1 | head -20查看占用高的进程,可能是MySQL或PHP-FPM配置不当。 - 大日志勿手动删除:如果
/var/log下日志文件很大,直接用rm可能释放不了空间(因为进程仍持有文件句柄),建议用> /var/log/syslog清空而非删除。 - 测试脚本先手动跑:第一次运行用
bash -x /root/clean_cache.sh观察每一步输出,确认无误再添加定时。
效果验证
执行清理后再次运行 free -h,对比 buff/cache 列数值。
通常能从几百MB降到几十MB。
同时观察网站访问是否流畅。
如果一台2GB内存的外贸站,清理后可释放500MB~1GB缓存。
高频问题解答
Q:清理后服务器会不会变慢?
A:刚清理完的瞬间,由于缓存被清空,访问第一次可能稍慢,之后自动重建缓存,对长期运行无负面影响。
Q:脚本里的 echo 3 会不会不安全?
A:安全。Linux内核设计允许通过 /proc/sys/vm/drop_caches 释放缓存,不会结束进程或丢失数据。
Q:没有SSH权限能用宝塔直接清理吗?
A:可以,在宝塔面板顶部菜单「软件商店」-「系统工具」安装「系统清理」,也能清理部分缓存。
如果你正在处理外贸站宝塔面板服务器内存爆满的问题,建议先按本文手动清理一次,确认效果后再配置定时脚本。
遇到异常时优先回看避坑和高频问题部分。