0
我是一個新手,當涉及到Mongo和Elasticsearch,我有一個問題。從Mongo刪除到Elasticsearch
我將Mongo的集合移動到ES索引。收藏有三千萬份文件。最初,劇本迅速而不間斷地移動了15千萬個文件。經過15個百萬次後,「500內部錯誤」更頻繁地出現。我能夠在PHP腳本的幫助下移動28萬個文件,之後我得到「500內部錯誤」。錯誤日誌是空的。 PHP的內存限制設置爲1,2 GB,我無法放大。腳本的
片段,其中錯誤顯示出來看起來是這樣的:
$db->createCollection($collectionName);
$collection = new MongoCollection($db, $collectionName);
$cursor = $collection->find()->skip($nextPortion)->limit($pageing);
while ($value = $cursor->getNext())
{
...........
make JSON
...........
}
腳本無法通過此行移動。在這一行我得到服務器錯誤:
while ($value = $cursor->getNext())
我使用ES中的批量API移動文件。
有沒有什麼辦法通過增加PHP內存來完成移動文件?
謝謝你的幫助。
@ user2622824我肯定會使用_id的範圍來代替,這可能是導致問題的原因 – Sammaye
此外,這不是應通過Web服務器執行的操作(以「500服務器錯誤」作爲提示)。當涉及到腳本執行時間時,CLI環境中的PHP應該更加靈活。 MongoCursor的生命週期可以用[MongoCursor :: timeout()](http://www.php.net/manual/en/mongocursor.timeout.php)進行調整,但除非提供實際的錯誤,否則很難確定原因。空錯誤日誌可能是配置問題的結果。我期望['$ cursor-> hasNext()'](http://www.php.net/manual/en/mongocursor.hasnext.php)拋出超時異常。 – jmikola