如何在 Django WSGI 应用程序中强制限制内存?
我希望我的应用程序在使用量超过 1GB 时抛出 MemoryError
。我正在 WSGI 守护进程模式下运行。
我看到内存限制可能有 3 个地方:
- apache.conf
- wsgi 某处
- django 配置
,但我找不到正确的配置选项。在 PHP 中,您可以使用以下命令执行此操作:
php_value memory_limit 1GB
apache.conf
中的
I want my app to throw an MemoryError
when its usage goes over 1GB. I'm running in WSGI daemon mode.
I see 3 places the memory limit could be:
- apache.conf
- wsgi somewhere
- django configuration
but I can't find the right config options. In PHP you can do this with :
php_value memory_limit 1GB
in your apache.conf
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尽管存在 C API 定义,但大多数平台上并未实现资源内存限制。因此,mod_wsgi 不会尝试实现此类限制。如果 PHP 能够做到这一点,那么它能够做到这一点是因为它是一个比 Python 更受约束和控制的环境。
唯一可移植的方法是运行一个单独的守护进程,该进程运行“ps”或使用“/proc”来监视进程的内存使用情况,然后向那些超过某个预定义值的进程发送 SIGINT 信号。
mod_wsgi 的更新
版本 3.4 支持守护程序模式选项,该选项可能能够限制内存使用。请参阅:
它们是否工作取决于您使用的操作系统。
Resource memory limits aren't implemented on most platforms even though C API definitions exist. As such, mod_wsgi doesn't try to implement such restrictions. If PHP is doing it, is is able to do so by virtue that that it is a more constrained and controlled environment than Python.
The only portable way is to have a separate daemon process running which runs 'ps' or uses '/proc' to monitor memory usage of processes and then send a SIGINT signal to those which go over some predefined value.
UPDATE
Version 3.4 of mod_wsgi supports options for daemon mode that may be able to restrict memory usage. See:
Whether they work depends on the operating system you are using.
使用
resource.setrlimit()
与resource.RLIMIT_VMEM
。Use
resource.setrlimit()
withresource.RLIMIT_VMEM
.