服务器内存优化
今天再打开1panel的时候,发现内存使用率已经占了 60%。之前扩展了 10 个 g, 因为服务器上安装了将近 15 个应用服务,16 个网站,存储了 4 个数据库。
我平时也就发下博客,存储一下博客图片,图片大部分是压缩上传的,正常来讲内存应该不会这么快的消耗。
那么我就在1panel上查看一下内存占用情况。
首先我查看的是日志:
日志
我经过在
1panel中寻找到文件/var/log/journal, 点击内存计算,看到日志占用将近 2g 左右的内存。
于是查阅资料得:
/var/log/journal/11fbb0b5b0e9e9698398a9c76904eff0/ 是 systemd-journald 的日志存储目录。
/var/log/journal/是 systemd 日志的主目录11fbb0b5b0e9e9698398a9c76904eff0是您系统的机器 ID(Machine ID)的哈希值- 该目录包含系统服务、内核、应用程序等日志
不建议删除整个目录,原因:
- 会丢失历史日志,影响问题排查
- 可能导致 systemd-journald 服务异常
- 需要 root 权限,操作需谨慎
推荐做法:
# 查看日志占用空间
journalctl --disk-usage
# 删除 30 天前的日志
sudo journalctl --vacuum-time=30d
# 将日志总大小限制为 200MB(自动删除最旧的)
sudo journalctl --vacuum-size=200M
# 修改配置文件
sudo nano /etc/systemd/journald.conf
# 添加或修改以下配置: =========== 的内容
# =========== 开始
[Journal]
# 限制日志总大小为 500MB
SystemMaxUse=500M
# 限制保留时间为 7 天
MaxRetentionSec=7day
# =========== 结束
# 重启服务
sudo systemctl restart systemd-journald这样日志文件的大小将会限制最近 7 天的日志,超过 7 天的日志会被自动删除。
如果您不在意这 2g 左右的日志占用,您可以选择不进行任何操作。
Overlay2 存储驱动
后来我发现/var/lib/docker/overlay2目录的体积超大,将近占用了全部的内存。
这个文件是什么?
/var/lib/docker/overlay2是Docker的Overlay2存储驱动目录,用于存储:
- 容器镜像层(只读)
- 容器可写层(读写)
- 容器文件系统变更
Docker 使用 Overlay2 实现分层存储,多个容器可共享相同的基础镜像层。
为什么会这么大?
常见原因:
- 镜像和容器累积:未清理的旧镜像、停止的容器、构建缓存
- 容器日志:应用日志持续增长
- 数据卷:挂载的数据持续写入
- 悬空资源:未使用的镜像、容器、网络、数据卷
是否可以删除?
不建议直接删除整个目录,会导致:
- 所有容器无法运行
- 所有镜像丢失
- 数据卷数据丢失
安全清理方法
# 查看 Docker 总体占用
docker system df
# 查看 overlay2 目录大小
sudo du -sh /var/lib/docker/overlay2执行如下图所示:

上图可以看到,docker镜像共 19 个,16 个正在使用,占用11.55g 可回收1.44g,容器工 16 个,16 个在使用,共占用29.81M,可回收0 而/var/lib/docker/overlay2目录占用了24g。
# 清理所有未使用的资源(镜像、容器、网络、构建缓存)
docker system prune -a
# 只清理未使用的镜像
docker image prune -a
# 清理停止的容器
docker container prune
# 清理未使用的数据卷(谨慎!)
docker volume prune执行命令 1 后,清理了降级1g内存

使用以下命令可以清除特定资源
# 删除特定镜像
docker rmi <image_id>
# 删除停止的容器
docker rm <container_id>
# 删除未使用的数据卷
docker volume ls -q | xargs docker volume rm
# 清除构建缓存
docker builder prune -a