版本 3.1
问题背景:之前用私有部署,从来不清理缓存,结果造成内存占用过高,服务器总是掉线。
尝试过的方法:
- 通过 mingdao 的配置文件限制 Redis 的内存占用。有用,但是用处不大, 因为只限制 Redis,时间长了,一样的内存占用就起来了。
- 给服务器添加自动清理缓存脚本。有用,但用处不大,因为主要的占用其实是 docker 运行的容器。 给服务器清理缓存只是挠痒痒。
- 限制 docker 容器的内存占用。 应该这就是究极方法了。今天刚开始用,还没有经历长测,所以效果后面再持续反馈。
步骤:
- 先
docker stats查看内存占用,找到那个占用特别高的。 一般就两个,一个是明道服务容器,一个是文件预览服务容器。 明道服务容器 3.1 的稳定占用应该在 12G 以上,很多。如图:![image.png]()
- 然后用
docker update --memory 14500m --memory-swap -1 容器ID来限制大小,14500 就是 14.5G 这样基本上我可以留 1G 给服务器,支持 nginx 和其他服务免得掉线。

有更好的办法吗?求指教呀老哥~
~~👎 ~~
老哥,你是怎么写的?求分享呀。
追加评论, 只限制微服务的容器的内存占用不够, 需要同时限制其他容器。
如果只限制微服务的容器内存,没法明显降低服务器的内存占用。
我昨天开始限制全部容器内存占用,到现在成功将服务器的内存占用稳定再 93% 附近。今天使用一天,没有明显异常。
怎么写?
直接在 docker-compose 文件里面限制就行了,也不会失效
有个弊端, 这个 CONTAINER ID 每次更新版本重启服务之后,都会变。 这个限制就会失效,需要重新配置。