Il vero motivo per cui non puoi fare ciò che chiedi (limita la memoria) è perché MongoDB non gestisce la memoria che utilizza direttamente, ma consente al sistema operativo di farlo. MongoDB si limita a mappare tutti i suoi dati e quindi ha la pagina del sistema operativo dentro e fuori dalla memoria, se necessario. Di conseguenza, non esiste una gestione diretta della quantità utilizzata fino a quando MongoDB non lo implementa in un modo completamente diverso, o il sistema operativo lo consente (non possibile in Linux dai 2.4 giorni).
Al momento, l'unico modo per separare veramente le risorse è utilizzare una soluzione di virtualizzazione e isolare MongoDB nella propria VM. Sì, ci sono spese generali (anche se gli hypervisor sono migliorati molto), ma al momento è il prezzo da pagare per quel livello di controllo delle risorse.
In termini di OOM Killer, anche senza altri processi sull'host, purché il set di dati e gli indici superino la memoria disponibile, MongoDB può risolvere i problemi di OOM Killer. Ciò è dovuto al modo in cui i dati vengono paginati dalla memoria - se non c'è pressione di memoria (nient'altro vuole memoria residente) e continui ad aggiungere / toccare nuovi dati e indici, alla fine crescerà per consumare tutta la RAM disponibile. Da qui la raccomandazione di configurare sempre alcuni swap quando si esegue MongoDB:
https://docs.mongodb.com/manual/administration/production-notes/#swap
Ovviamente, i dati LRU verranno prima cercati, altri processi possono occupare anche il res mem, ma il concetto si applica comunque a meno che non si carichi il set di dati in memoria e poi rimanga statico. La cosa migliore da fare se sei preoccupato è metterlo in MMS e tenere traccia dell'utilizzo nel tempo:
http://mms.mongodb.com
Aggiornamento: agosto 2015
Da quando ho scritto questa risposta, le cose sono andate un po 'avanti e le informazioni sono un po' obsolete. Ad esempio, Linux ora ha cgroups e tecnologie correlate ( contenitori Docker per esempio) che sono maturati al punto da consentire di isolare e limitare meglio le risorse ( compresa la memoria ) consumate da qualsiasi processo in un ambiente di produzione, anche quello che utilizza mappatura della memoria come MongoDB.
Inoltre, con l'avvento di nuovi motori di archiviazione oltre MMAP come WiredTiger in MongoDB 3.0+, è possibile utilizzare la funzionalità integrata per limitare la dimensione della cache per MongoDB. Quindi, i requisiti di RAM ora dipendono davvero da come si sceglie di configurare MongoDB, dall'ambiente in cui lo si esegue e dal motore di archiviazione scelto.