我的一个Linuxnetworking服务器最近耗尽内存,挂在一个OOM杀死狂热,并不得不重新启动。 这是一个512 MB的VPS,但自从几个月前成立以来,它一直在运行。 我怎样才能防止这种情况再次发生?
我无法从日志中找出哪个过程是原因。 死亡的进程是mysqld,接着是apache2。 根据框上运行的内容,我认为Django应用程序(在apache和mod_wsgi下运行)中可能出现了问题。 将限制堆栈大小(与stack-size选项为wsgi)帮助? 一般可以限制wsgi或python或apache的内存使用情况吗? ( 这个问题的答案不是。)
不要在prefork MPM的embedded式模式下运行WSGI应用程序(如果使用的话),而是使用守护进程模式,因此进程数量受限。 读:
http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html
在mod_wsgi的4.0版本中,只要你使用守护进程模式,如果操作系统支持,你可以限制单个进程的内存。