Translate

viernes, 17 de mayo de 2013

SpringData MondoDb: Configuración de conexiones PRODUCCION

Establecemos los valores de la conexión de SpringData para MongoDb en producción basándonos en el siguiente artículo encontrado en StackOverflow: How to configure MongoDB Java driver MongoOptions for production use?

auto-connect-retry="true" : para que el servidor se reconecte se pierde la conexión.

connections-per-host="40"  :  Conexiones que tendrá nuestra aplicación, son la que va a establecer del driver de java para esta aplicación.

connectTimeout = "30000": El el tiempo que espera el servidor antes de abortar un intento de conexión con la base de datos. O sea es el tiempo que espera para conseguir una conexión libre. Debe de ser algo grande entre 15 y 30 segundos para que sea realista según recomiendan.

socketTimeout="60000" : Una vez iniciada un operación de lectura, es tiempo que el socket va  a esperar la respuesta, si se supera podremos tener errores del tipo:

--
Caused by: com.mongodb.MongoException$Network: can't say something
 at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:194)
 at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:155)
 at com.mongodb.DBApiLayer$MyCollection.update(DBApiLayer.java:349)
 at com.mongodb.DBCollection.update(DBCollection.java:177)
 at com.mongodb.DBCollection.save(DBCollection.java:817)
 at com.mongodb.DBCollection.save(DBCollection.java:785)
 at org.springframework.data.mongodb.core.MongoTemplate$10.doInCollection(MongoTemplate.java:885)
 at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:388)

Caused by: java.net.SocketTimeoutException: Read timed out
 at java.net.SocketInputStream.socketRead0(Native Method)
 at java.net.SocketInputStream.read(SocketInputStream.java:150)
 at java.net.SocketInputStream.read(SocketInputStream.java:121)
 at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
 at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
 at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
 at org.bson.io.Bits.readFully(Bits.java:46)
--

Referencia útil: connectionTimeout VS SocketTimeout

maxWaitTime = "1500" : Milisegundos que un hilo esperará  para conseguir una conexión libre del pool de conexiones.

Aquí os dejo la configuración que por ahora nos funciona correctamente.
--
<mongo:mongo host="xxx.xxx.xxx" port="xx" id="mongo">
   <mongo:options connections-per-host="40"
            threads-allowed-to-block-for-connection-multiplier="1500"
            connect-timeout="30000"
            max-wait-time="1500"
            auto-connect-retry="true"
            socket-keep-alive="true"
            socket-timeout="60000"
            slave-ok="true"
            write-number="1"
            write-timeout="0"
            write-fsync="true"/>
</mongo:mongo>

--

jueves, 9 de mayo de 2013

Instalación de MongoDb en Windows 7


En este rápido post vamos a ver como se instala de una manera muy fácil MongoDB en nuestro sistemas Windows.

1 - Para hacerlo lo que necesitamos es descargar MongoDB a nuestra ordenador e instalarlo (o descompromirlo) según la versión que utilicemos aquí podemos encontrarlo el paquete de descarga.

Dependiendo del sistema operativo que utilicemos descargaremos una u otra en mi caso con Windows 7



2 - Descomprimimos el zip en la ruta que queramos, en mi caso lo he puesto c: de tal modo que el directorio de instalación es C:\mongodb-win32-2.4.1

3 - Debemos de crear un directorio para guardar los archivos de base de datos, la documentación nos da un directorio de instalación por defecto que es c:\data\db. Podemos crearlo o establecer uno distinto en los parámetros de arranque de mongo con la opción --dbpath

Yo prefiero definir el directorio dentro de la propia carpeta de instalación por lo tanto  creo la siguiente ruta de directorios

C:\mongodb-win32-2.4.1\data\db

4  - Creación del script de arranque:  Para no tener que estar poniendo el comando de arranque todo el tiempo creo un archivo start_mongo.bat dentro del directorio bin, con el siguiente código:


mongod.exe --dbpath ..\data\db

5 - Arrancamos mongo: Ejecutamos el script de arranque pulsando sobre nuestro archivo .bat o desde una ventana de commando de windows y desde el directorio bin escribimos el código del punto 4.


Ya tenemos arrancada nuestra base de datos.

6 - Ahora arrancamos la Shell de MongoDB para poder operar con la base de datos.

Desde una nueva ventana de comandos accdemos al direcorio bin y ejecutamos:

mongo.exe




Ya podemos operar con nuestra base de datos en LOCAL.

Para operar podemos ver las base de datos que tenemos disponibles:

show dbs

y seleccionamos la base de datos que deseemos con el comando user.

use test

Una vez seleccionada la base de datos ya podemos insertar registros

db.test.save({a:1})

y recuperarlos:

db.test.find()




Ya tenemos la base de datos lista para operar.