Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 2 de 8
Ir a la página Anterior  1, 2, 3, 4, 5, 6, 7, 8  Siguiente
 
Evitar Cuelgue Por Desconexion
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Re: Evitar Cuelgue Por Desconexion 
 
shordi escribió:  
Citar:
pero eso solo lo haces a base de dinero.

Es bueno ser jefe...

Link


Nota... que quede claro que mi frase de moscas a cañonazo para nada era por tu propuesta de tu superordenador, de verdad.  

Endeluego, que te gusta meter salsa.  
 



 
última edición por gambafeliz el Jueves, 25 Julio 2019, 19:14; editado 1 vez 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evitar Cuelgue Por Desconexion 
 
hola amigos,

Gracias por las sugerencias.

En una ocasión pensé que tenia ese problema solucionado con una replica.
En principio utilice una replica directa de mysql-server (Master, Slave, start salve, etc.)
era impresionante como se actualizaba el esclavo mediante la lectura del log-binario,
incluso si el esclavo esta apagado y se hacen varias transacciones en el master,
al encender se actualizaba bien. Pero, me percate de que en ciertas ocasiones faltaban transacciones
en el sistema de contabilidad, , rayos imaginence.
Supongo que también falla la replica de mysql por la deficiencias del servicios de internet.

La segunda opción fue crear mi propio replicador de transacciones, incluso lo publique en
este foro. Lamentablemente tenia un error que yo estimo en un 4% de las transacciones,
y eso en contabilidad es mucho.   .

creo que lo mas conveniente es probar si la conexión esta abierta y reabrirla.

Gracias por todo.
 



 
alessandri - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evitar Cuelgue Por Desconexion 
 
Citar:
creo que lo mas conveniente es probar si la conexión esta abierta y reabrirla.

Eso es lo que hago en estos momentos. Utilizo ésta función...
Public Function abreConexion(Optional conec As String = Application.Name) As Boolean

    If Not Connections[conec].opened Then
        Try Connections[conec].Open
        If Not Connections[conec].opened Then
            Wait 1
            Try Connections[conec].Open
            If Error Then
                Message.Error("No se pudo abrir la Base de Datos " & Connections[conec].Name & ". Se aborta la operación en curso")
            Endif
        Endif
    Endif
    Return Connections[conec].opened

End
 

... que como ves intenta (re)abrir la conexión 2 veces. El motivo es que descubrí que por algún misterio insondable, al intentar abrir por primera vez una conexión, a veces el servidor devolvía un error de "Datos Incompletos", sin más explicación. Un segundo intento unos instantes después funcionaba perfectamente.

Pero con esto y con todo, no estoy seguro aún de que así se eviten los cuelgues. Estoy aún en pruebas.

Saludos.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evitar Cuelgue Por Desconexion 
 
shordi escribió:  
Citar:
creo que lo mas conveniente es probar si la conexión esta abierta y reabrirla.

Eso es lo que hago en estos momentos. Utilizo ésta función...
Public Function abreConexion(Optional conec As String = Application.Name) As Boolean

    If Not Connections[conec].opened Then
        Try Connections[conec].Open
        If Not Connections[conec].opened Then
            Wait 1
            Try Connections[conec].Open
            If Error Then
                Message.Error("No se pudo abrir la Base de Datos " & Connections[conec].Name & ". Se aborta la operación en curso")
            Endif
        Endif
    Endif
    Return Connections[conec].opened

End
 

... que como ves intenta (re)abrir la conexión 2 veces. El motivo es que descubrí que por algún misterio insondable, al intentar abrir por primera vez una conexión, a veces el servidor devolvía un error de "Datos Incompletos", sin más explicación. Un segundo intento unos instantes después funcionaba perfectamente.

Pero con esto y con todo, no estoy seguro aún de que así se eviten los cuelgues. Estoy aún en pruebas.

Saludos.


Me parece un tema muy interesante descubrirlo. Simplemente por que veo que es demasiado importante como para obviarlo.

Sres. habéis abierto la caja de pandora, me voy a poner a investigarlo para resolver el puzzle.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evitar Cuelgue Por Desconexion 
 
gambafeliz escribió:  

Sres. habéis abierto la caja de pandora, me voy a poner a investigarlo para resolver el puzzle.

Más de uno estaríamos eternamente agradecidos si lo resuelves.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evitar Cuelgue Por Desconexion 
 
shordi escribió:  
gambafeliz escribió:  

Sres. habéis abierto la caja de pandora, me voy a poner a investigarlo para resolver el puzzle.

Más de uno estaríamos eternamente agradecidos si lo resuelves.


Yo dispongo de una web con una base de datos MySQL o quizás la han cambiado a MariaDB pero una de las dos. Y es cuestión de que me deis un programa pequeño para hacer la prueba, si no es mucha la molestia.

Pero a mi me gustaría saber si me puede describir un escenario perfecto y básico para por ejemplo un estudiante para que pueda investigar sin tiempo que me condiciona y dar con una solución perfecta. Si puedes me das o me describes inconvenientes a tener en cuenta para que no me vayas por las ramas, por ejemplo, para ti no valdría que cree tablas temporales con las consultas o ..., etc.

Si me das un pequeño laboratorio de muestra yo lo investigo con gusto, bajo gambas. Todo sino es mucho la molestia.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evitar Cuelgue Por Desconexion 
 
Citar:
Pero a mi me gustaría saber si me puede describir un escenario perfecto y básico para por ejemplo un estudiante para que pueda investigar sin tiempo que me condiciona y dar con una solución perfecta.


Lo de perfecto tiene muchas lecturas y situaciones, pero básicamente el tema es:

Crea una conexión a tu base de datos. Recupera alguna información. Espera una hora. Prueba a recuperar más información.

Si tu servidor te ha cerrado la conexión gambas no se entera, que lo único que él controla es cuándo la ha abierto o cerrado él mismo, e intenta ejecutar la segunda consulta a un servidor inexistente. Ahí se eterniza y tu programa se cuelga.

Digo una hora porque el estándar de time-out de los servidores es, creo, de 1800 segundos (30 minutos), pero los administradores pueden haber cambiado ese valor a un máximo que ignoramos (a menos que seas un administrador de la BD que mencionas). Lo ideal es averiguar el tiempo máximo de conexión inactiva del servidor mysql o mariadb que uses y superarlo.

Si averiguas ese límite y en tus programas introduces un timer que cierre la conexión antes de que se produzca, etc. etc. lo solucionarías... salvo que sea el proveedor de internet quien te corte la conexión por inactividad... en cuyo caso... cabezazos contra el servicio técnico de turno.

Con esto te digo que no es tema de consultas ni tablas temporales ni nada de eso (para consultas excesivamente largas la propia conexión tiene un time-out) el problema son los tiempos de inactividad de la conexión, que en aplicaciones ofimáticas puede ser muy largo. Yo voy loco con los abogados, que bajan un documento y se pasan horas escribiendo, a la hora de subir los cambios se encuentran -a veces, que no siempre- con el maldito cuelgue del programa.

Cerrar la conexión después de cada consulta no es solución porque enlentece el programa ad infinitum.

No sé qué más contarte sobre el tema.

Saludos.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evitar Cuelgue Por Desconexion 
 
shordi escribió:  
Citar:
Pero a mi me gustaría saber si me puede describir un escenario perfecto y básico para por ejemplo un estudiante para que pueda investigar sin tiempo que me condiciona y dar con una solución perfecta.


Lo de perfecto tiene muchas lecturas y situaciones, pero básicamente el tema es:

Crea una conexión a tu base de datos. Recupera alguna información. Espera una hora. Prueba a recuperar más información.

Si tu servidor te ha cerrado la conexión gambas no se entera, que lo único que él controla es cuándo la ha abierto o cerrado él mismo, e intenta ejecutar la segunda consulta a un servidor inexistente. Ahí se eterniza y tu programa se cuelga.

Digo una hora porque el estándar de time-out de los servidores es, creo, de 1800 segundos (30 minutos), pero los administradores pueden haber cambiado ese valor a un máximo que ignoramos (a menos que seas un administrador de la BD que mencionas). Lo ideal es averiguar el tiempo máximo de conexión inactiva del servidor mysql o mariadb que uses y superarlo.

Si averiguas ese límite y en tus programas introduces un timer que cierre la conexión antes de que se produzca, etc. etc. lo solucionarías... salvo que sea el proveedor de internet quien te corte la conexión por inactividad... en cuyo caso... cabezazos contra el servicio técnico de turno.

Con esto te digo que no es tema de consultas ni tablas temporales ni nada de eso (para consultas excesivamente largas la propia conexión tiene un time-out) el problema son los tiempos de inactividad de la conexión, que en aplicaciones ofimáticas puede ser muy largo. Yo voy loco con los abogados, que bajan un documento y se pasan horas escribiendo, a la hora de subir los cambios se encuentran -a veces, que no siempre- con el maldito cuelgue del programa.

Cerrar la conexión después de cada consulta no es solución porque enlentece el programa ad infinitum.

No sé qué más contarte sobre el tema.

Saludos.


Perfecto me has instruido con total detalle. Eres el mejor

Voy a empezar con lo que me has descrito. Primero voy a ver el tiempo de cierre de conexión del servidor, pero en mi caso yo no lo administro por que esta en Alemania y lo tengo para jugar con desarrollos web de prueba aunque en el pasado era mi web oficial.

Tengo un servidor propio en casa pero no lo tengo ahora mismo en funcionamiento por que me cansé de que alguien que sirve la luz me cortara cuando le daba la gana y que curioso que cuando lo quite no se corto la luz en mil años. Que esajerao soy.

Bueno lo dicho, voy hacer la prueba y voy a simular un abogado redactando largos trabajos para después ver la cagada de conexión. Espero que sea mas o menos lo que quieres que pruebe.

Gracias joven.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evitar Cuelgue Por Desconexion 
 
Hola mis amigos gamberos.

Creo que es hora de dar solución a ese problema definitivamente, así que aquí le presento más premisas.

* Es obvio que el TimeOut es un problema, pero este se soluciona con un control time que ejecute un Select
ligero sobre una tabla pequeña cada 30 segundos o 20 según sea el caso, o bien se puede gestionar la configuración
adecuada con quien sea el administrador.
* Ya he incorporado eso en mi aplicación y el problema persiste.

ESCENARIO REAL
servidor:
Ubuntu 14.04 32 bits, 200 GB de disco SD, ubicado en NewYork, Empresa DigitalOcean, 8 Cores 2.8 MHZ
DBMS:
MysqlServer  5.5.62-0ubuntu0.14.041, conectado vía socket /var/run/mysqld.sock, port: 3306
Carga de datos:
Base de datos cargada con 211 MB de data, 120 tablas
Clientes se conectan:
desde República Dominicana, mediante la red Claro
Cantidad de clientes:
se ha creado un solo cliente en Mysql y lo usan 16 computadoras
Carga en el servidor estimada:
800 facturas al día que afectan al menos 4 tablas, y muuuuuchos select para buscar los productos, pocas sentencias DELETE
seguridad
No uso SSL

VARIABLES
[list]componente de conexión mysql de Gambas3 y su empleo en la aplicación
configuración de MysqlServer
configuración del servidor remoto
empresa distribuidora de internet ISP (Velocidad de carga y descarga)
carga de datos[/list]

CUESTIONES
1- ¿Porque se desconecta espontáneamente incluso si has utilizado la conexión 3 segundos antes?

2- ¿Porque si realizas un Dump de la base de datos completa se descarga a 1.3 mb pero si haces un select sobre 200,000 registros
no puedes aprovechar dicha velocidad en gambas? (en mi caso es así cuando intento visualizar los datos desde el objeto result)

3- ¿Porque si hago la conexión vía PHP se observa un rendimiento de aproximadamente 650 kbps consultando 200,000 registros?

*Si surgen otras preguntas favor agregar, pero no perder el enfoque de la primer pregunta.

APORTE
En 24 horas voy a alquilar un servidor exactamente igual en DigitalOcean para ponerlo a la disposición por 30 días, con una copia de la base de datos
y todas la credenciales de SSH para que puedan verificar las configuraciones de mysql y ubuntu.

Gracias.
 



 
alessandri - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Evitar Cuelgue Por Desconexion 
 
Colaboraré en lo que me sea posible. Prometido.

Saludos
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Evitar Letras En Textbox CanihoJR General 6 Jueves, 24 Septiembre 2009, 23:51 Ver último mensaje
CanihoJR
No hay nuevos mensajes Evitar Repetir Letras Dani26 Aplicaciones/Fragmentos de Código 1 Sabado, 19 Junio 2010, 12:26 Ver último mensaje
Emmet
No hay nuevos mensajes Evitar La Ejecución De Una Función obedlink General 4 Martes, 09 Abril 2013, 22:28 Ver último mensaje
shordi
No hay nuevos mensajes Evitar Autoguardado inforpalma Instalación 5 Domingo, 13 Enero 2019, 21:06 Ver último mensaje
jsbsan
 

Publicar nuevo tema  Responder al tema  Página 2 de 8
Ir a la página Anterior  1, 2, 3, 4, 5, 6, 7, 8  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario