used than per org maximum larger data bsonserializationexception are 16mb performance ubuntu mongodb debian

performance - per - org bson bsonserializationexception payload document size of is larger than maximum of 16777216



Memoria lĂ­mite de MongoDB (3)

Hey Vlad, tienes un par de estrategias simples aquí con respecto a los registros.

Lo primero que debe saber es que Mongo generalmente puede manejar muchas inserciones sucesivas sin una gran cantidad de RAM. La razón de esto es simple, solo inserta o actualiza cosas recientes. Entonces, el tamaño del índice crece, pero los datos se pagarán constantemente.

Dicho de otra manera, puede desglosar el uso de la RAM en dos partes principales: índice y datos.

Si está ejecutando el registro típico, la porción de datos se está borrando constantemente, por lo que solo el índice realmente permanece en la RAM.

La segunda cosa que debe saber es que puede mitigar el problema del índice al colocar los registros en grupos más pequeños. Piénsalo de esta manera. Si recopila todos los registros en una colección con sello de fecha ( logs20101206 ), también puede controlar el tamaño del índice en la RAM.

A medida que avance el número de días, el índice anterior se borrará de la memoria RAM y no se podrá acceder nuevamente, por lo que simplemente desaparecerá.

pero también estoy considerando usar un script cron que vuelque y elimine datos antiguos

Este método de registro por días también ayuda a eliminar datos antiguos. En tres meses, cuando haya terminado con los datos, simplemente haga db.logs20101206.drop() y la colección desaparecerá instantáneamente. Tenga en cuenta que no reclama espacio en disco (todo está asignado previamente), pero los nuevos datos llenarán el espacio vacío.

¿Debo considerar también usar claves más pequeñas, como se sugiere en otros foros?

Sí.

De hecho, lo tengo incorporado en mis objetos de datos. Así que logs.action datos usando logs.action o logs->action , pero debajo, los datos realmente se guardan en logs.a Es realmente fácil gastar más espacio en los "campos" que en los "valores", por lo que vale la pena reducir los "campos" y tratar de abstraerlos en otros lugares.

Estoy usando mongo para almacenar archivos de registro. Tanto mongoDB como mysql se ejecutan en la misma máquina, virtualizar mongo env no es una opción. Me temo que pronto me encontraré con problemas de rendimiento ya que la tabla de registros crece muy rápido. ¿Hay una manera de limitar la memoria residente para mongo para que no se consuma toda la memoria disponible y ralentice excesivamente el servidor mysql?

Máquina DB: Debian ''lenny'' 5

Otras soluciones (por favor comentar):

  • Como necesitamos todos los datos históricos, no podemos usar colecciones con límite, pero también estoy considerando usar un script cron que vuelque y elimine datos antiguos

  • ¿Debo considerar también usar claves más pequeñas, como se sugiere en otros foros?



Para la versión 3.2+, que utiliza el motor wiredTiger, la opción --wiredTigerCacheSizeGB es relevante para la pregunta. Puedes configurarlo si sabes lo que estás haciendo exactamente. No sé si es la mejor práctica, solo lea el document y levántelo aquí.