我有一台装有 ubuntu 12.04 的服务器,它安装了 Apache、PHP5、MySQL 和名为 RApache 的 Apache 模块。我正在使用网格数据进行动态处理。
每次用户向网站页面发出请求,动态计算网格时,都会在 R 脚本的数据和函数中分配内存
问题在于每次请求之后都不会释放内存空间,并且脚本会分配内存直到服务器不再支持,因此需要重新启动它。
有没有办法在每次请求之后清除 R 使用的内存?
答案1
我观察到同样的问题(在 Ubuntu 14.04 上),一些 WebApp 使用 Rapache/Xhr-Requests 在服务器端运行内存密集型 R 脚本。
您是否检查过 mpm_prefork mod 是否实际启用(即在 /etc/apache2/mods-enabled/ 中列出)?
我按照以下说明安装了模块http://rapache.net/manual.html但它最初并未启用(只是 mpm_event 的东西)。
所以最后只需运行
a2enmod mpm_prefork
(+ apache restart) 为我解决了这个问题。
垃圾收集应该可以正常工作(否则您也可以尝试调整 mpm_prefork.conf 中的参数)。
附言:当然我知道可能还有大量其他导致内存泄漏的原因。