dokcer部署java项目内存占用过高

dokcer部署java项目内存占用过高

问题:

当我在使用docker容器运行java项目时,部署了几个项目服务器的内存占用就非常高了,一开始以为是项目太大了,后来发现没那么简单,通过一下指令查看docker容器占用内存大小,发现确实不对劲。

docker stats
如图

image-20221018010639469

其中每个容器的最大内存都是16G(宿主机的内存),翻阅资料发现,在不使用参数设置堆内存大小时会根据容器的大小来分配jvm的内存,我猜测可能这样就导致jvm分配的内存太大导致很难进行垃圾回收,导致内存占用过大(可能不是,敬请纠正),所以只需要限制容器的内存大小就可以解决了。

解决方案:

通过docker-compose文件设置参数:

version: '3.7'
services:
  openldap:*******
    image: 
    container_name: aaa
    environment:
      - N9E_NID=22
    ports:
      - "389:389"
      - "636:636"
    deploy:
      resources:
         limits:
            cpus: "2.00"
            memory: 5G
         reservations:
            memory: 200M
    volumes:
      - ./ldap:/var/lib/ldap
      - ./slapd.d:/etc/ldap/slapd.d
    restart: always

以上是网上的配置,可能由于docker版本的问题,在我的项目里不能使用,与是我找到了下面的版本。

version: '3.7'
services:
  openldap:
    image: 10.10.xxx.54/public/openldap:1.3.0
    container_name: openldap
    environment:
      - N9E_NID=22
    ports:
      - "389:389"
      - "636:636"
    mem_limit: 200m
    volumes:
      - ./ldap:/var/lib/ldap
      - ./slapd.d:/etc/ldap/slapd.d
    restart: always

重新启动容器,使用docker stats查看。

image-20221018012127660

成功设置容器最大内存。

使用docker stats查看。

[外链图片转存中…(img-5NHESLap-1666027990019)]

成功设置容器最大内存。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值