【发布时间】:2017-07-12 23:34:41
【问题描述】:
我的 Django 应用程序的许多视图都使用一个大模型 (900Mb) 来计算它们的输出。我想加载这个模型一次并与所有视图共享。我这样做的方式是在views.py 中加载模型,然后将模型用作全局变量。
with open('big_model.pkl','rb') as f:
model = pickle.load(f)
def view1(request):
out = model.compute(request)
...
def view2(request):
out = model.compute(request)
...
我在 AWS beanstalk 上部署了我的 Django 应用程序。如果我在运行我的应用程序的实例上运行 top,我会在 1 个请求后看到以下内容:
Mem: 4048016k total, 2807496k used, 1240520k free, 3660k buffers
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
11530 wsgi 20 0 2817m 1.6g 30m S 0.0 41.9 0:04.63 httpd
第二次请求后,出现另一个进程,占用了 1Gb 内存。
Mem: 4048016k total, 3941208k used, 106808k free, 2192k buffers
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
11530 wsgi 20 0 2817m 1.6g 29m S 0.0 41.9 0:04.63 httpd
11532 wsgi 20 0 2817m 1.6g 29m S 0.0 41.9 0:04.32 httpd
这不会发生在我的本地机器上。有什么想法吗?
【问题讨论】:
标签: python django amazon-elastic-beanstalk