我已经安装了 FOSElasticaBundle 并让它处理我的数据的横截面。
我的问题出现在我需要用来构建索引的大约 14m 行。我运行了填充命令,昨天大约 6 小时后,它以 10.8% 的速度出错并出现内存错误:
PHP Fatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 52277 bytes) in /var/www/html/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php on line 111
正如你所看到的,我已经将我的 php 内存限制设置为 2G,这应该是相当多的。
错误前的最后一行看起来像
Populating index/entity, 10.8% (1315300/12186320), 36 objects/s (RAM : current=2045Mo peak=2047Mo)
每条线路的电流和峰值都在上升,从大约 30mb 开始。
我的假设是存在某种内存泄漏?当然,这个过程不应该耗尽 php 的内存。我还尝试了带有一些额外参数的命令
app/console fos:elastica:populate --no-debug --no-reset --env=prod
但是当我看着它运行时,当前的内存仍在增加。
关于这里可能发生的事情以及我可以做些什么来调试它有什么想法吗?我发现这个讨论听起来像我的问题,但并没有真正提出一个好的解决方案:https ://github.com/FriendsOfSymfony/FOSElasticaBundle/issues/82 。我正在使用学说和默认提供程序。
谢谢-