阿里云服务器怎么清理缓存

阿里云服务器怎么清理缓存?

使用 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% 后再处理,可能已经影响数据库、日志和系统服务正常运行。

九、清理前的安全检查

执行清理操作前,建议先确认:

  1. 当前登录的是正确的云服务器;
  2. 已经确认需要清理的目录或资源;
  3. 重要数据已经完成备份;
  4. 当前没有正在进行的数据库备份或文件写入;
  5. 业务低峰期可以接受短暂的性能波动;
  6. 命令不会误删挂载盘、数据库目录或网站文件;
  7. 清理后可以检查服务状态和日志。

对于数据库、网站上传目录和用户文件,不能把“缓存”当作可以随意删除的内容。误删数据后,云盘快照或备份可能是唯一恢复手段。

常见问题

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。本站原创内容未经允许不得转载,或转载时需注明出处::优快云资讯门户 » 阿里云服务器怎么清理缓存

赞 (0)