elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda ServidorAVL
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda ServidorAVL  (Leído 4,098 veces)
dreadAriel

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Ayuda ServidorAVL
« en: 27 Marzo 2014, 14:18 pm »

Estimados,
Junto con saludar le comento mi problema, me encuentro implementando un sistema de monitoreo gps via web. La parte web lo tengo todo listo pero la aplicación que es el corazón de mi sistema es un serverSocket , el cual se encarga de la comunicacion con los GPS, leer los datos, validarlos e insertarlos en la bbdd. a simple vista la rutina es muy sencilla y la tengo implementada, pero resulta que al cabo de un o dos dias se cae el serverSocket por lo que yo de tengo el proceso y los inicio de nuevo pero no es lo optimo no he podido encostrar el problema por lo que acudo a los mas experimentados del foro para solicitar su ayuda.
adjunto los codigos.
Código
  1. public void run(){
  2.  
  3. while (conectado){
  4.            procesarEntrada();
  5.            try
  6.            {
  7.                //System.out.println("\n hebra durmiendo");
  8.                Thread.sleep(1000);
  9.            }
  10.    catch (InterruptedException ex)
  11.            {
  12.               escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error : en la hebra InterruptedException =" + ex.getMessage()+"\n");                
  13.            }
  14.            catch(Exception ex){
  15.               escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error : en la hebra Exception =" + ex.getMessage()+"\n");    
  16.            }
  17.        }//Fin while conectado  
  18.  
  19.        // Cierro el imput stream y el socket
  20.        try {
  21.            in.close();
  22.    out.close();
  23.            try
  24.            {
  25.               conectar.close();
  26.            }
  27.            catch (SQLException ex)
  28.            {
  29.                 escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error:  Al cerrar la conexion con la bbdd "+ex.getSQLState()+"\n");
  30.            }        
  31.   System.out.println(this.getName()+" "+obtenerfecha()+"-" + p.getDeviceId() + "- Desconectado.\n");
  32.           escribirA.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-" + p.getDeviceId() + "- Desconectado.\n");
  33.  
  34.        } catch (IOException ex) {
  35.           //ig.setRecibido("Error al cerrar la conexion con el dispositivo "+p.getDeviceId()+" . "+ex.getMessage()+"\n");
  36.           escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: E/S al cerrar la conexion con el dispositivo "+p.getDeviceId()+" : "+ex.getMessage()+"\n");
  37.        }
  38.        catch (Exception ex){
  39.            escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: Exception al cerrar la conexion con el dispositivo "+p.getDeviceId()+" : "+ex.getMessage()+"\n");
  40.        }
  41.  
  42.  
  43.    } //fin run  
  44.  
  45.    public void leerSocket(){
  46.        try{
  47.            // Lee un mensaje enviado por el cliente
  48.            this.mensajeRecibido = in.readLine();
  49.            //envia el id al dispositivo
  50.            this.out.flush();
  51.        }catch (IOException ex){
  52.            this.detener();
  53.            escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: E/S del dispositivo :" + ex.getMessage()+"\n");
  54.            try {
  55.                in.close();
  56.                out.close();
  57.            } catch (IOException ex1) {
  58.                escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: E/S al cerrar el stream de entrada :" + ex1.getMessage()+"\n");
  59.            }catch(Exception ex2){
  60.                escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: Exception al cerrar el stream de entrada :" + ex2.getMessage()+"\n");
  61.            }
  62.        }catch (Exception ex){
  63.            this.detener();
  64.            escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: Exception del dispositivo :" + ex.getMessage()+"\n");
  65.            try {
  66.                in.close();
  67.                out.close();
  68.            } catch (IOException ex2) {
  69.                escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: E/S al cerrar el stream de entrada :" + ex2.getMessage()+"\n");
  70.            }catch(Exception ex2){
  71.                escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: Exception al cerrar el stream de entrada :" + ex2.getMessage()+"\n");
  72.            }
  73.        }      
  74.    }
  75.  
  76.    public void protocolizarMensaje(){
  77.        try{
  78.            if(this.mensajeRecibido != null)
  79.            {
  80.                this.p = this.protocolo.decode(this.mensajeRecibido);
  81.                this.out.writeUTF(p.getDeviceId());
  82.            }
  83.        }catch (Exception ex){
  84.            escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: Exception al protocolizar el mensaje  :" + ex.getMessage()+"\n");
  85.        }
  86.    }
  87.  
  88.    public void insertarMensaje(){
  89.        if(this.mensajeRecibido != null){
  90.           if(this.mensajeRecibido.contains(">REV")){
  91.               if(this.p.getLatitude().equals(0.0)||this.p.getLongitude().equals(0.0)){
  92.                   //ig.setRecibido("Conectando con el satelite\n");
  93.                   escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-"+p.getDeviceId()+"-Conectando con el satelite\n");
  94.               }
  95.               else{
  96.                   //System.out.println(p.getTime()+"\n"+cont);
  97.                   this.db.insertarPosicion(conectar,p);
  98.                   //guardoId=p.getDeviceId();
  99.                   System.out.println(this.getName()+" "+this.p.getDeviceId()+" "+this.p.getTime()+" "+this.p.getDate()+"-Posicion Actualizada\n");
  100.                   escribirA.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-"+this.p.getDeviceId()+" - "+this.p.getTime()+" - Posicion Actualizada\n");
  101.               }
  102.           }
  103.        }
  104.        this.mensajeRecibido="";
  105.    }
  106.  
  107.     public synchronized void procesarEntrada(){
  108.        //try {
  109.            //this.semaforo.acquire();
  110.            leerSocket();
  111.            protocolizarMensaje();
  112.            insertarMensaje();
  113.            //this.semaforo.release();
  114.        //} catch (InterruptedException ex) {
  115.           // escribirE.EscribirArchivo(this.getName()+" "+obtenerfecha()+"-Error: InterruptedException al interrumpir la hebra :" + ex.getMessage()+"\n"); }
  116.     }
  117.  
  118.  
  119.  
agradezco cualquier tips para sacar el proyecto adelante muchas gracias.


« Última modificación: 27 Marzo 2014, 14:35 pm por dreadAriel » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda ServidorAVL
« Respuesta #1 en: 27 Marzo 2014, 14:29 pm »

no puedo ayudarte, pero 2 cosas importantes

1- usa las etiquetas geshi para publicar codigo, modifica tu tema y arriba de los emoticones a la derecha esta


2- publica solo la zona del código donde creaa que existe el problema, es dudoso que alguien se dedique extensivamente a analizar todo ese código


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Ayuda ServidorAVL
« Respuesta #2 en: 27 Marzo 2014, 15:38 pm »

¿Tu aplicación es Multithreading? Si no es así, ésto puede ser la causa del problema. Si no usas Multithreading al cabo de una cantidad de conexiones se generará un cuello de botella que traerá consigo la caída del server.

Aquí tienes un buen turorial sobre hacer tu aplicación Multithreading: Concurrencia en Java 7
En línea

dreadAriel

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ayuda ServidorAVL
« Respuesta #3 en: 27 Marzo 2014, 19:05 pm »

He intentando todo amigos, quisiera que me guiaran un poco o alguna idea basada en su experiencia. La idea es mantener la conexion a 600 dispositivos gps simultaneamente y les juro estoy desesperado.
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Ayuda ServidorAVL
« Respuesta #4 en: 27 Marzo 2014, 19:23 pm »

Ya sé que estás desesperado pero eso no sirve como dato. ¿El servidor es potente? ¿Cada conexión se hace un un hilo independiente para garantizar que no haya cuello de botella? ¿Utilizas un pool de conexiones?

Salu2.
En línea

dreadAriel

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ayuda ServidorAVL
« Respuesta #5 en: 28 Marzo 2014, 02:19 am »

Ya sé que estás desesperado pero eso no sirve como dato. ¿El servidor es potente? ¿Cada conexión se hace un un hilo independiente para garantizar que no haya cuello de botella? ¿Utilizas un pool de conexiones?

Salu2.
buen el servidor en una virtualizacion de 40 gb dd, 1,5 de ram, si la conexion se hace en cada hilo y no utilizo un pool de conexiones.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda ServidorAVL
« Respuesta #6 en: 28 Marzo 2014, 02:25 am »

wow! no soy experto... pero tal vez C u otro lenguaje soporte de esa manera... pero java, especialmente java, dudo que soporte 600 conexiones simultaneas en 1,5gb de ram... y es especialmente una virtualización (si es el mismo termino que yo trabajo, como SO virtual, pero cual SO?) ya que tiene que simular el hardware y otras cosas... que procesador está usando?
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
dreadAriel

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ayuda ServidorAVL
« Respuesta #7 en: 28 Marzo 2014, 02:39 am »

wow! no soy experto... pero tal vez C u otro lenguaje soporte de esa manera... pero java, especialmente java, dudo que soporte 600 conexiones simultaneas en 1,5gb de ram... y es especialmente una virtualización (si es el mismo termino que yo trabajo, como SO virtual, pero cual SO?) ya que tiene que simular el hardware y otras cosas... que procesador está usando?

ese es el requerimiento final pero actualmente trabajo con 11 conexiones
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Ayuda ServidorAVL
« Respuesta #8 en: 28 Marzo 2014, 13:33 pm »

Igual ese servidor es pobrísimo, el SO sólamente debe consumir un tercio, el JRE otro poco, otras aplicaciones otro poco, te queda muy poca ram dedicada a la aplicación. Anyway, cuando se te cae el server, ¿lanza algun error como OutOfMemoryEror o StackOverFlow?
En línea

dreadAriel

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ayuda ServidorAVL
« Respuesta #9 en: 28 Marzo 2014, 15:56 pm »

Igual ese servidor es pobrísimo, el SO sólamente debe consumir un tercio, el JRE otro poco, otras aplicaciones otro poco, te queda muy poca ram dedicada a la aplicación. Anyway, cuando se te cae el server, ¿lanza algun error como OutOfMemoryEror o StackOverFlow?

no amigo lo k si los bota a todos los gps conectados, pero entonces como tu dices puede ser el server, ams el SO es debian 6 squeeze, voy a contratar uno mas potente cuanto me recomiendan uds.
muchas gracias por todo y les comento como me va ampliando las caractereisticas del server.
« Última modificación: 28 Marzo 2014, 16:41 pm por dreadAriel » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines