如何安全清理服务器磁盘不损坏站点?终端查看各应用RAM占用方法
RunCloud 托管 DigitalOcean Droplet 降配前的内存排查与磁盘清理实操
一、终端查看各Web应用RAM占用
RunCloud 默认给每个Web应用分配独立的webappX(X为数字ID)系统用户做权限隔离,按用户维度统计内存是最准确的,不会和全局服务混淆。
- 按应用维度聚合统计内存占用
直接执行以下命令,输出结果对应用户名可以和/home/runcloud/webapps/下的目录名、RunCloud面板的应用列表做映射,直接得到每个站点的总内存开销:ps -eo rss,user,comm | awk '/webapp[0-9]+/ {sum[$2]+=$1} END {for (u in sum) printf "应用用户: %-10s 累计内存占用: %.2f MB\n", u, sum[u]/1024}' - 分PHP-FPM池统计进程内存
如果要单独看每个应用PHP进程的内存占比,执行:ps -ylC php-fpm --sort:rss | awk 'NR>1 {sum[$(NF-1)]+=$8} END {for (p in sum) printf "FPM进程池: %-22s 内存占用: %.2f MB\n", p, sum[p]/1024}' - 统计全局共享服务内存
Nginx、数据库、Redis这类服务是所有站点共享的,单独统计算基础开销:# Nginx总内存 ps -C nginx -o rss= | awk '{sum+=$1} END {printf "Nginx服务内存占用: %.2f MB\n", sum/1024}' # 数据库、Redis内存 ps -C mysqld,mariadbd,redis-server -o rss,comm | awk '{sum[$2]+=$1} END {for (s in sum) printf "%s服务内存占用: %.2f MB\n", s, sum[s]/1024}'
统计完成后,把所有应用内存+全局服务内存加总,预留30%的空闲内存给系统缓存、突发流量,就能确定降配后的内存规格是否满足需求,不要卡着满负载阈值选配置
二、无业务影响的冗余磁盘清理
所有清理操作前,先在DigitalOcean控制台给Droplet打全量快照,操作失误可以直接回滚,避免业务故障。
- 清理轮转归档的旧日志
RunCloud的Nginx、PHP、系统日志默认会长期留存,是磁盘占用的大头,只删已经轮转完成的旧日志不会影响正在运行的服务:
注意:不要直接删除后缀为# 先查看日志总占用 du -sh /var/log/nginx /var/log/php* /home/runcloud/webapps/*/logs # 删除7天前的轮转Nginx/PHP日志 find /var/log/nginx -type f -name "*.log.*" -mtime +7 -delete find /var/log/php* -type f -name "*.log.*" -mtime +7 -delete # 删除各Web应用30天前的本地日志 find /home/runcloud/webapps/*/logs -type f -name "*.log*" -mtime +30 -delete # 清理系统journal日志,仅保留最近7天 journalctl --vacuum-time=7d.log的正在写入的日志文件,会导致文件句柄未释放,磁盘空间无法回收,还可能引发服务报错 - 清理系统包管理缓存与无用依赖
Ubuntu/Debian系统长期运行会积累大量安装包缓存、旧版本无用依赖,执行以下命令安全清理,不会影响运行中服务:apt autoremove -y apt autoclean apt clean - 清理RunCloud临时文件与备份碎片
RunCloud运行过程中会产生临时文件、中断备份残留的碎片,不会被自动清理:
不要手动删除# 查看临时目录占用 du -sh /home/runcloud/tmp /var/runcloud/backup/tmp # 删除3天前的临时文件 find /home/runcloud/tmp -type f -mtime +3 -delete find /var/runcloud/backup/tmp -type f -mtime +3 -delete/var/runcloud/backup目录下的正式备份文件,也不要随意修改/home/runcloud/webapps下的应用目录结构 - 清理Web应用自身冗余文件
先扫描所有应用目录下大于100M的大文件,确认是无用的旧备份包、数据库dump、过期缓存后再删除:
常见可安全清理的内容:Laravel等框架30天前的应用日志、WordPress等程序的本地页面缓存、已经解压完成的安装压缩包。find /home/runcloud/webapps -type f -size +100M -exec ls -lh {} \; - 清理Docker冗余资源(仅使用RunCloud Docker服务的场景)
如果用容器部署过应用,执行以下命令清理停止的容器、无用镜像、未挂载的冗余卷:
执行前确认没有需要保留的停止容器,避免误删。docker system prune -af
清理完成后执行df -h查看根分区剩余空间,逐个访问所有站点、测试后台与接口功能正常后,再执行Droplet降配操作。
内容的提问来源于stack exchange,提问作者DistantDigit
相关产品推荐
相关产品推荐

