level 1
dblance
楼主
各位大神,求助一个关于容器内存使用的问题。
最近在给自己操作系统打个镜像,然后编译一个uwsgi的程序用来在镜像里面跑flask的web应用。因为单位是离线的环境,也不允许我用外部镜像来实现,所以我是这么干的:
1.先用光盘装一台vm,这个vm用minimal模式安装,这时候会用到比较少的包
2.建立一个工作目录,配置好
正确的
yum仓库,并为python安装好pip,把装完的操作系统打个tar包
3.到docker运行的主机上,把步骤2的tar包import为操作系统镜像
4.写个Dockerfile,从上述镜像构建我要的uwsgi镜像,构建中会自动yum安装必要的包,pip从自己的仓库服务器安装python包,包括flask和uwsgi等。最后会设定好flask代码所在位置,启动uwsgi程序。
经过几番操作,上述步骤成功并且能做出这样的镜像,也能正常运行容器,但是我发现内存的使用远远超过想象。
我的基础os镜像大概是2.3G,装完各类python包和uwsgi也就增加100M左右,但是一旦容器运行,只要我设定limit-as(uwsgi的内存限制参数),启动进程就会报malloc失败,无法分配8G以上内存,容器是running,但实际上uwsgi的进程是起不来的。
平时使用从来没有遇到uwsgi需要占用这么多内存过,我取消这个 limit-as 内存限制后,uwsgi可以正常在容器内启动,但启动就用掉我8G以上内存,感觉非常离谱。。。不明白这块容器内的内存到底分配来做什么了?(进入容器看是uwsgi被分了8G左右,但是不知道这8G有何用)
我在docker外部的操作系统上又装了flask和uwsgi,发现这里启动uwsgi后内存几乎没有什么显著变化,这个和我非容器化使用uwsgi时是一致的,无法理解为啥一样的行为进入容器一启动直接8个G内存就分配掉了。
有没有大神能帮忙分析下原因呢?谢谢!
2024年09月08日 15点09分
1
最近在给自己操作系统打个镜像,然后编译一个uwsgi的程序用来在镜像里面跑flask的web应用。因为单位是离线的环境,也不允许我用外部镜像来实现,所以我是这么干的:
1.先用光盘装一台vm,这个vm用minimal模式安装,这时候会用到比较少的包
2.建立一个工作目录,配置好
正确的
yum仓库,并为python安装好pip,把装完的操作系统打个tar包
3.到docker运行的主机上,把步骤2的tar包import为操作系统镜像
4.写个Dockerfile,从上述镜像构建我要的uwsgi镜像,构建中会自动yum安装必要的包,pip从自己的仓库服务器安装python包,包括flask和uwsgi等。最后会设定好flask代码所在位置,启动uwsgi程序。
经过几番操作,上述步骤成功并且能做出这样的镜像,也能正常运行容器,但是我发现内存的使用远远超过想象。
我的基础os镜像大概是2.3G,装完各类python包和uwsgi也就增加100M左右,但是一旦容器运行,只要我设定limit-as(uwsgi的内存限制参数),启动进程就会报malloc失败,无法分配8G以上内存,容器是running,但实际上uwsgi的进程是起不来的。
平时使用从来没有遇到uwsgi需要占用这么多内存过,我取消这个 limit-as 内存限制后,uwsgi可以正常在容器内启动,但启动就用掉我8G以上内存,感觉非常离谱。。。不明白这块容器内的内存到底分配来做什么了?(进入容器看是uwsgi被分了8G左右,但是不知道这8G有何用)
我在docker外部的操作系统上又装了flask和uwsgi,发现这里启动uwsgi后内存几乎没有什么显著变化,这个和我非容器化使用uwsgi时是一致的,无法理解为啥一样的行为进入容器一启动直接8个G内存就分配掉了。
有没有大神能帮忙分析下原因呢?谢谢!