我的一台 Linux 网络服务器最近内存不足,在 OOM kill 狂潮中挂起,不得不重新启动。这是一台 512 MB 的 VPS,但自从几个月前设置以来,它一直运行良好。我该如何防止这种情况再次发生?
我无法从日志中找出导致问题的进程。被杀死的进程是 mysqld,然后是 apache2。根据机器上运行的内容,我认为其中一个 Django 应用程序(在 apache 和 mod_wsgi 下运行)可能出现问题。限制堆栈大小(使用stack-size
wsgi 选项)有帮助吗?是否可以限制 wsgi 或 python 或 apache 的内存使用量?(答案这个问题说不。)
答案1
如果要使用 prefork MPM,请不要以嵌入模式运行 WSGI 应用程序,而应使用守护进程模式,以限制进程数量。阅读:
http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html
在 mod_wsgi 4.0 版本中,只要您使用守护进程模式,您就可以限制单个进程的内存(如果操作系统支持)。