そこで、約 800k のドキュメントを処理するデーモンを go で作成しましたが、メモリ不足の問題が発生しています。
mongodb からドキュメントを取得したときに見たものから、メモリ使用量はループごとに増加します。
func main() {
session, err := mgo.Dial("localhost")
if err != nil { panic(err) }
defer session.Close()
subscriptionsC = session.DB("sm").C("subscriptions")
subscriptions := []Subscription{}
for {
subscriptions = GetSubscriptions()
そして、他の機能は次のとおりです。
func GetSubscriptions()([]Subscription) {
result := []Subscription{}
err := subscriptionsC.Find(nil).Prefetch(0.0).All(&result)
if err != nil { Log("signups_err", err.Error() + "\n") }
return result
}
ループごとに配列を再宣言しているのか、それとも正確に何が起こっているのかはわかりません。
どんな助けでも大歓迎です。