
阿里云服务器怎么清理缓存?
使用 Linux 云服务器一段时间后,可能会看到内存中的 buff/cache 数值不断增加,或者发现磁盘空间逐渐减少。两种情况的处理方法不同。
需要先说明:Linux 会主动利用空闲内存缓存文件,以提高磁盘读写速度。缓存占用内存并不等于内存泄漏,也不能简单地认为超过总内存的某个固定比例就必须清理。判断内存是否紧张,应该重点看 available、系统负载、交换分区和业务进程状态。
一、先确认是内存不足还是磁盘空间不足
登录服务器后,可以先执行:
free -h
重点关注:
available:系统当前可分配的内存;buff/cache:内核用于缓存的内存;Swap:交换分区的使用情况。
如果 available 仍然充足,通常无需手动清理页缓存。Linux 会在应用需要内存时自动回收这部分缓存。
再检查磁盘空间:
df -h
如果某个分区接近 100%,问题通常不是内存缓存,而是日志、备份、上传文件、数据库文件或应用缓存占满了磁盘。
二、查看占用内存较多的进程
如果确实存在内存不足,可以先找出占用内存较多的进程:
ps aux --sort=-%mem | head
也可以使用:
top
或安装并使用 htop:
htop
重点检查 Web 服务、数据库、PHP-FPM、Java、容器和定时任务是否持续占用大量内存。直接清理页缓存只能暂时释放一部分内存,无法解决应用本身的内存泄漏或配置过大的问题。
三、临时释放 Linux 页缓存
只有在确实需要测试缓存回收效果,或排查特定性能问题时,才建议手动执行 drop_caches。执行前最好确认业务状态,并先将待写入的数据同步到磁盘。
只释放页缓存
sync
echo 1 | sudo tee /proc/sys/vm/drop_caches
释放目录项和 inode 缓存
sync
echo 2 | sudo tee /proc/sys/vm/drop_caches
同时释放页缓存、目录项和 inode 缓存
sync
echo 3 | sudo tee /proc/sys/vm/drop_caches
这些命令只会清理内核缓存,不会删除网站文件、数据库文件或用户数据。清理后,相关文件再次访问时需要从磁盘读取,短时间内可能造成磁盘 I/O 增加、响应变慢或业务延迟升高。
不建议把 echo 3 > /proc/sys/vm/drop_caches 设置成每天自动执行的任务。它通常不会带来持续性能提升,反而可能让系统反复丢失本来可以复用的缓存。
四、清理应用程序缓存
应用缓存不是 Linux 页缓存,不能通过 drop_caches 清理。常见应用缓存包括:
- WordPress、Laravel 等程序的缓存;
- PHP OPcache;
- Redis、Memcached 等内存缓存;
- Nginx 或 Apache 的临时文件;
- Java、Node.js 等应用生成的缓存;
- CDN 或网站加速服务中的缓存。
清理前要先确认缓存目录和服务类型。以网站程序为例,应优先通过程序后台、部署工具或官方命令清理,而不是直接删除整个网站目录。
如果使用 Redis 或 Memcached,应根据业务需求删除过期键或清空指定数据库。生产环境中执行清空操作前必须确认目标实例和数据库,避免误删正在使用的数据。
五、清理日志和临时文件
如果磁盘空间不足,可以先查找占用较大的目录:
sudo du -xhd1 / | sort -h
进入占用较大的目录后继续排查,例如:
sudo du -xhd1 /var | sort -h
常见占用来源包括:
/var/log系统和应用日志;- 网站上传目录;
- 数据库备份;
- docker 镜像和容器日志;
- 临时安装包;
- 应用生成的缓存文件;
- 旧内核或软件包。
查看日志目录时,不要直接删除正在使用的日志文件。更稳妥的做法是使用 logrotate 管理日志轮换,限制单个日志文件大小和保留时间。
对于 systemd 日志,可以查看占用情况:
journalctl --disk-usage
如需清理较早的日志,应先确认保留期限,再执行类似命令:
sudo journalctl --vacuum-time=14d
该命令会删除超过 14 天的 systemd 日志。生产环境应根据审计、排障和合规要求确定保留时间。
六、清理软件包缓存
Debian 或 Ubuntu 系统可以使用:
sudo apt clean
该命令会清理已下载的软件包缓存。
CentOS、Rocky Linux 或 AlmaLinux 等系统可以根据实际包管理器使用:
sudo dnf clean all
较旧的系统可能使用:
sudo yum clean all
执行前应确认系统版本和包管理器。不要为了释放少量空间删除系统目录或手动删除不明文件。
七、Docker 环境的缓存清理
如果服务器运行 Docker,可以先查看磁盘占用:
docker system df
只清理未使用的构建缓存:
docker builder prune
清理未使用的镜像、容器和网络前,应先确认这些资源不会被业务使用。以下命令可能删除范围较大的未使用资源:
docker system prune
带有 -a、--volumes 等参数时,清理范围会进一步扩大。生产服务器不建议直接执行未经确认的强力清理命令。
八、配置自动清理和监控
与其定期强制清空页缓存,更建议建立监控和维护机制:
- 为磁盘使用率设置告警;
- 使用
logrotate自动轮换日志; - 为对象存储或备份设置生命周期规则;
- 定期删除确认无用的安装包和临时文件;
- 监控内存、交换分区和应用进程;
- 为数据库和网站缓存设置合理的过期时间;
- 定期检查异常增长的日志和上传目录。
可以设置磁盘空间告警,例如根分区使用率超过 80% 时提醒管理员。超过 90% 后再处理,可能已经影响数据库、日志和系统服务正常运行。
九、清理前的安全检查
执行清理操作前,建议先确认:
- 当前登录的是正确的云服务器;
- 已经确认需要清理的目录或资源;
- 重要数据已经完成备份;
- 当前没有正在进行的数据库备份或文件写入;
- 业务低峰期可以接受短暂的性能波动;
- 命令不会误删挂载盘、数据库目录或网站文件;
- 清理后可以检查服务状态和日志。
对于数据库、网站上传目录和用户文件,不能把“缓存”当作可以随意删除的内容。误删数据后,云盘快照或备份可能是唯一恢复手段。
常见问题
free -h 显示缓存很多,是不是内存不够?
不一定。Linux 会使用空闲内存作为文件缓存。只要 available 仍然充足,应用没有频繁使用 Swap,系统通常不需要手动清理。
清理页缓存后,内存马上又被占用,正常吗?
正常。系统会重新利用空闲内存缓存近期访问过的文件,这正是页缓存的用途。反复清理并不能让内存永久保持空闲。
drop_caches 会删除网站文件吗?
不会。它只会释放内核中的页缓存、目录项和 inode 缓存。但执行后磁盘读取可能暂时变慢,不建议在业务高峰期操作。
内存不足应该先清理缓存还是升级配置?
应先查看进程内存占用、Swap 使用情况和系统日志。如果是应用内存泄漏、进程配置不合理或任务并发过高,应先处理根因。业务确实需要更多资源时,再考虑增加内存或调整实例规格。
磁盘满了,清理页缓存有用吗?
没有。页缓存占用的是内存,磁盘空间不足通常需要清理日志、备份、临时文件、Docker 资源或应用上传文件。
总结
清理阿里云 Linux 服务器缓存前,先判断问题属于内存不足、磁盘空间不足,还是应用缓存增长。
- Linux 页缓存通常会自动回收,不需要按固定比例定期清理;
drop_caches只适合临时排查或特定维护场景;- 应用缓存要通过对应程序或服务管理;
- 日志、备份和 Docker 资源需要按规则清理;
- 磁盘空间问题应使用
df和du找到真正的占用来源; - 生产环境操作前应做好备份,并避开业务高峰。
优快云(youkuaiyun.com)提供云服务器、虚拟主机、域名注册、企业邮箱和备案接入等服务,适合企业官网、中小网站和常规 Web 应用部署。
云服务器产品与价格可参考:https://www.youkuaiyun.com/server/
具体云服务器配置、价格、活动规则和续费标准可能会调整,请以官网页面显示为准。
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-62778877-8261;邮箱:jenny@youkuaiyun.com。本站原创内容未经允许不得转载,或转载时需注明出处::优快云资讯门户 » 阿里云服务器怎么清理缓存

