美文网首页
Docker常见问题

Docker常见问题

作者: 芒埃 | 来源:发表于2017-11-06 16:16 被阅读0次

    1.docker容器一直重启:给docker容器限制资源,但容器中的jvm其实不受容器资源控制的,也就是说,如果容器被限制为500m, jvm的Xmx没做限制,此时应用程序会一直申请jvm内存而不做限制,当jvm分配的内存超过容器限制的内存500M后,docker就会通知linux内核杀死该容器进程.

    要解决这个问题,就是要让jvm的Xmx设置的值永远小于容器限制的内存值. 自动化脚本如下:

    limit_in_bytes=$(cat /sys/fs/cgroup/memory/memory.limit_in_bytes)

    RESERVED_MEGABYTES=40

    if [ "$limit_in_bytes" -ne "9223372036854771712" ]

    then

    limit_in_megabytes=$(expr $limit_in_bytes \/ 1048576)

    heap_size=$(expr $limit_in_megabytes - $RESERVED_MEGABYTES)

    export JAVA_OPTS="-Xmx${heap_size}m $JAVA_OPTS"

    echo JAVA_OPTS=$JAVA_OPTS

    else

    echo -e '\033[31m容器内存未限制,默认jvm内存800M\033[0m'

    export JAVA_OPTS="$JAVA_OPTS -Xmx800m"

    echo JAVA_OPTS=$JAVA_OPTS

    fi

    其中9223372036854771712为/sys/fs/cgroup/memory/memory.limit_in_bytes中的值,该值代表容器的最大内存限制,如果没有任何指定,那么默认值为9223372036854771712 bytes .

    (通过查看/var/log/message查看到linux内核杀死该容器进程,原因为OOM)

    2.日志文件没有挂载到宿主机导致运行一定时间后容器硬盘资源不足.(容器应该只提供服务,不提供数据)

    查看容器的磁盘占用:du -h -d1 /var/lib/docker/containers/

    相关文章

      网友评论

          本文标题:Docker常见问题

          本文链接:https://www.haomeiwen.com/subject/vellmxtx.html