我有Apache
mod\uwsgi
Django
应用程序mod_wsgi
以守护程序模式运行。
我有一个视图,它从数据库中获取重要的queryset,并通过计算queryset的结果另外分配数组,然后返回这个数组。我没有使用线程本地存储、全局变量或任何类似的东西。
问题是,我的应用程序占用的内存与我为mod_wsgi设置的线程数相对应。
我做了一个小实验,在mod_wsgi中设置了不同数量的线程,然后通过curl检查wsgi进程的内存可以爬升多远来点击我的视图。
它是这样的:
1 thread - 256Mb 2 threads - 400Mb 3 threads - 535Mb 4 threads - 650Mb
因此,每个线程都会增加大约120-140Mb的最高内存使用量。
我似乎为第一次请求分配的初始内存从未被释放。在单线程场景中,当到达第二个请求(对同一视图)时重用它。有了这个我就可以离开了。
但当我使用多个线程时,当请求由以前从未运行过该请求的线程处理时,该线程在本地某处“保存”了另外140mb。
mod_wsgi
中的某个线程?谢谢
PS.DEBUG
在设置中设置为False。py
在这种情况下,您应该做的是垂直分区Web应用程序,以便它跨多个mod_wsgi守护进程组运行。这样,您可以根据您委托给每个进程的URL子集的要求定制mod_wsgi守护进程的配置。由于Django应用程序的管理界面URL通常具有很高的瞬时内存使用要求,但不经常使用,因此建议执行以下操作:
WSGIScriptAlias / /my/path/site/wsgi.py
WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess main processes=3 threads=5
WSGIProcessGroup main
WSGIDaemonProcess admin threads=2 inactivity-timeout=60
<Location /admin>
WSGIProcessGroup admin
</Location>
这样做的目的是创建两个守护进程组。默认情况下,URL将在进程持久化的主守护进程进程组中处理。
然而,对于管理接口的URL,它们将被引导到管理守护进程组,该组可以通过减少线程数量的单个进程设置,外加非活动超时,以便在管理接口不可用时自动重启进程60秒后使用,从而回收任何过度的瞬时存储器使用。
这将意味着,如果进程自上次以来已被回收,则向管理接口提交请求的速度可能会略微减慢,因为所有内容都必须重新加载,但由于它是管理接口而不是公共URL,因此这通常是可以接受的。
问题内容: 在以下示例中,我有一些有关内存使用的相关问题。 如果我在解释器中运行, 我的机器上使用的实际内存最高为80.9mb。那我 实际内存下降,但仅限于。解释器使用基线,因此不向 释放内存有什么好处?是否因为Python正在“提前计划”,以为你可能会再次使用那么多的内存? 它为什么特别释放- 释放的量基于什么? 有没有一种方法可以强制Python释放所有已使用的内存(如果你知道不会再使用那么多
我有一个像下面这样的递归方法 我发现本地变量无法释放,如果我将最大堆大小设置为50M(-xmx50M),它将在第44次调用时满足OOM 但将其更改为for循环则不存在此问题 那么为什么在递归中叫它不释放局部变量的内存呢?
我在C#上度过了一段糟糕的时光,在我不再引用它之后,没有为我保存在内存中的大型结构释放内存。 我在下面包含了一些代码,它们显示了与我遇到的问题类似的问题。我想我一定是误解了GC,因为我不确定为什么下面的代码会抛出内存不足异常。 有人知道为什么我包含的代码会丢失内存吗?没有一份名单被保留,可以立即清理。 谢谢, 保罗 复制:全新的4.5控制台应用程序,将代码粘贴到Main中。 异常将在for循环的第
问题内容: 我应该在将分配的字符串传递给之后释放它吗? 我有一些类似的代码: 在将字符串传递给之后释放字符串时,出现错误。如果我删除呼叫,该错误消失。我究竟做错了什么? 我看到矛盾的意见。有人说我应该自己释放它,有人说VM释放它,有人说VM不释放它,而您应该用奇怪的巫术魔术来释放它。我很困惑。 问题答案: 参数to 的存储完全由您负责:如果您分配了,则需要它。因此,您发布的代码段是正确的。您正在其
关于浮点数学。2017年是否有可能重新设计计算机/标准,以便 --int(x) --十进制(固定位置,无轨迹x.x或x.xxn)((同时我在下面的答案中创建了一个hack)) --浮子(这里允许小径,就像浮子的深奥本质x. n?) 下面是我写的原文和一段视频,介绍了浮点CppCon 2015: 我正在编写一个迭代器,它将从0.0循环到3.0。 但是当我做=0.2时,结果不是预期的0.2,然后是0.
问题内容: 我编写了一个Python程序,该程序作用于大型输入文件,以创建代表三角形的数百万个对象。该算法是: 读取输入文件 处理文件并创建一个三角形列表,以其顶点表示 以OFF格式输出顶点:顶点列表,后跟三角形列表。三角形由顶点列表中的索引表示 在打印出三角形之前必须先打印出完整的顶点列表的OFF要求意味着在将输出写入文件之前,必须将三角形的列表保留在内存中。同时,由于列表的大小,我遇到了内存错