Java - Problema con Java y Mysql a traves de tunel ssh

   
Vista:

Problema con Java y Mysql a traves de tunel ssh

Publicado por karkoma (2 intervenciones) el 16/11/2009 20:48:40
Hola:

Estoy terminando un programa en java que contiene una base de datos para una empresa. El programa crea un tunel ssh. A traves de este tunel se conecta a una base de datos Mysql remota, abriendo un pool de conexiones (el commons-dbcp de apache) y puede hacer las consultas e inserciones de manera segura y encriptada.

Bien todo esto funciona bien ya sea en el propio servidor o en la misma red local. El problema me viene cuando me intento conectar desde fuera. También funciona pero muy lento. Al principio pensé que era por el ancho de banda, pero analizando el trafico, vi que solo usaba sobre un 10% del disponible, y a veces ni eso.

Después de buscar mucho por google, creiendo que el problema estaba en el tunel, se me ocurrió analizar el trafico con el wireshark. Bien, mi sorpresa fue que para obtener los datos preguntaba al servidor por la primera fila, esperaba a que llegara, la almacenaba, y volvía a repetir, así hasta llenar la tabla. Este era el problema, dentro de la red el tiempo de latencia es despreciable, pero en Internet, para llegar a mi servidor, el tiempo de latencia esta sobre 100 - 200 ms, y no es para nada despreciable.

Para llenar la tablas utilizo el único método que encontrado que es preguntar por la primera fila, guardar en un modelo de tabla, preguntar por la segunda, y así sucesivamente hasta llenar la tabla que quiero consultar.

Si sirve de algo, utilizo una combinación de estos dos manuales que encontré por la red:
http://www.chuidiang.com/java/mysql/BasicDataSource-Pool-Conexiones.php
http://www.chuidiang.com/java/mysql/mysql-java-basico.php

He mirado los tiempos, y la primera consulta tarda sobre 6 segundos, por que tiene que establecer la conexión (lo cual no me preocupa demasiado por que solo es la primera, es soportable), pero las otras consulta tardan sobre unos 1 - 2 segundos y con tablas de 15 registros como mucho. No quiero pensar que pasara cuando crezca la aplicación.

Por favor, pido si alguien sabe si hay alguna otra forma, o si se puede preguntar por varias filas a la vez, o alguna otra solución.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con Java y Mysql a traves de tunel ssh

Publicado por mario (622 intervenciones) el 17/11/2009 19:05:30
Pero es necesario que el cliente vea la base de datos desde iternet?, porque no penzar en una DMZ en donde lo unico que le das a ver al cliente es el webserver, y en tu intranet ubicas el app server y la bd.

Saludos!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con Java y Mysql a traves de tunel ssh

Publicado por karkoma (2 intervenciones) el 17/11/2009 19:27:05
A ver, no tengo ninguna aplicacion servidor, solo una aplicación cliente que se conecta a la base de datos mysql.

A parte tengo un servidor DNS que dentro de la red interna resuelve mi direccion de host como una IP local, y desde fuera, DynDNS se encarga de direccionar a mi servidor y a traves de NAT en el router llegar al servidor. No tengo nada mas que esto.

Lo de la DMZ no lo entiendo.... Para que poner una zona desmilitarizada? con abrir el puerto 80 tendria mas que suficiente. Ademas me parece que se ha entendido mal, tengo una libreria de Apache que me permite crear un pool de conexiones a la base de datos. Nada mas. No tengo instalado el servidor web de Apache, ni nada por el estilo.

Ahora mismo esto me funciona, no descarto algun dia poner alguna pagina php que haga algo parecido al que hace ahora este programa Java, pero ahora no. Ya tengo suficiente con terminar este programa que se me esta tirando el tiempo encima. Creo que no es tan raro acceder a una base de datos remotamente, lo único que pido es como solucionar el problema de la latencia.

He pensado en pedir varias filas a la vez pero no tengo idea de como hacerlo. Alguien se habra encontrado alguna vez con este problema.... supongo.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar