我有一个Django web应用程序,由apache2和mod_wsgi以守护程序模式提供服务,与Django文档中描述的方式相同。该应用程序托管在AWS中,并且未被固定化。
然而,现在我们需要在客户的一台服务器上进行预部署,我们决定使用Docker来简化部署。我在这个项目上使用Docker已经有一段时间了,但只用于开发,从未用于生产。
由于该应用程序同时使用Python的多线程进行阻塞操作和多处理CPU绑定任务。此外,Apache2正在生成多个进程,以便同时为多个请求提供服务。
如果应用程序在单个docker容器中运行,多处理会有任何问题吗?它是否能够生成多个进程并利用主机的多个核心?
您可以指定容器应该从主机消耗多少资源。此外,默认情况下,容器对主机的内存和CPU具有无限制的访问权限。
基于以上内容,我认为在容器中使用多线程和多处理是非常安全的,我所说的安全是指功能方面。
您可以在这里阅读官方文档中的资源限制:https://docs.docker.com/config/containers/resource_constraints/