FOSElasticaBundle をインストールして、データの断面を操作しました。
私の問題は、インデックスを作成するために使用する必要がある行が約 1,400 万行あるという点で発生します。populate コマンドを実行したところ、昨日約 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。私は教義とデフォルトのプロバイダーを使用しています。
ありがとうございました-