Mongodb

使用 Pymongo 將記錄插入 Mongodb 會逐漸耗盡我的 RAM 並最終耗盡所有記憶體

  • December 2, 2019

我正在編寫 Python 程式碼,該程式碼解析大小為 17GB(維基百科集合)的巨大 XML 文件,並將每個頁面標題以及該頁面中的連結(儲存為列表)插入到 MongoDB 集合中的頁面上。我正在使用命令插入links.insert_one(data)wheredata是由以下內容組成的字典

data = {
         'document': self.title, # a string (basically title of the Wikipedia page)
         'links': self.links # list of strings (all hyperlinked words in a page)
      }

<db_name>.insert_one(data)

我正在為每一頁重複這個過程(大約 1900 萬頁)

當我監控我的 RAM 使用情況(在 Ubuntu 中使用 htop)時,我看到 MongoDB 使用的 RAM 量不斷增加,並一直持續到我所有的記憶體都用完,最終導致系統崩潰。

當我註釋掉插入語句並執行程式碼時,我也做了以下觀察,它工作正常。所以,我認為問題在於我的 MongoDB 插入過程,而不是實際的 python 邏輯。

任何幫助將非常感激。

您可以設置 WiredTiger 記憶體大小,請參閱硬體注意事項

除此之外,在容器(Kubernetes、Docker、rkt)上執行 MongoDB,您可以輕鬆控制資源使用情況。如果您使用systemd執行 MongoDB,您還可以設置資源使用情況

引用自:https://dba.stackexchange.com/questions/254495