https://foro.gambas-es.org/viewtopic.php?f=3&t=7581
-----------------------------------
alessandri
Domingo, 14 Julio 2019, 13:59

Evitar Cuelgue Por Desconexion
-----------------------------------
Hola amigos,

Necesito saber como evitar que mi software se cuelgue ante un desconexión
del la base de datos. 

Lo que pasa es que en medio de cierta consulta puede ocurrir una desconexión
entonces no recibo ningún mensaje de error solo se congela el programa.

Para conectar uso este código:

            conn = New Connection
            conn.Host = DBhostname
            conn.Name = DBnom
            conn.Type = "mysql"
            conn.Port = "3306"
            conn.User = UserDB
            conn.Password = passDB
            Try conn.Open

Gracias.


-----------------------------------
jguardon
Domingo, 14 Julio 2019, 16:02

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Hola

La propiedad Timeout de la clase connection está por defecto en 20 segundos. Es decir, si no obtienes respuesta en esos 20sec la conexión se cierra (o debería). En cualquier caso, siempre antes de ejecutar cualquier consulta o transacción debes comprobar si la conexión está viva, en caso contrario reabrirla.

El valor de Timeout lo puedes establecer más corto, según necesidades. Pero puede que, como me imagino que estás conectando a un servidor remoto, lo que se pierde es la conexión TCP/IP y por tanto la conexión al servidor MySQL. En ese caso no tengo idea si mi sugerencia te puede servir.


http://gambaswiki.org/wiki/comp/gb.db/_connection/timeout


Saludos


-----------------------------------
alessandri
Domingo, 14 Julio 2019, 17:14

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Bien la conexión es vía internet. de todos modos voy a probar 
la propiedad timeout.

Gracias por la ninfomaníaco.


-----------------------------------
shordi
Domingo, 14 Julio 2019, 17:28

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
La mala noticia es que para el núcleo del problema no hay solución. Si la conexión ha sido cortada por la parte servidor, gambas se cuelga.

Hay dos posibles culpables: El propio servidor de internet o la compañía proveedora de servicios que tengas.
El problema son los time-out de inactividad, porque nadie te va cortar la sesión a media consulta.

Cuando cambiamos en la empresa de Vodafone a Movistar nos encontramos con ese problema y en este caso el culpable era la compañía. Conectado con sus técnicos me ampliaron los time-out al máximo que su sistema les permitía que eran dos horas y por ese lado se solucionó.

Si tu servidor de base de datos tiene un time-out severo de inactividad (por defecto creo recordar que según que en Mysql son 180 segundos), tu programa se colgará. Gambas no tiene más forma de saber si la conexión sigue abierta que preguntar (Connection.opened) a la propia conexión... y ahí se pierde y se cuelga.
Si controlas el servidor Mysql amplía esos time-out y no habrá problemas. Si no controlas el Servidor pregunta a los administradores si se pueden ampliar. 

Si no, tu única solución pasa por adaptar tu programa con alguna de éstas soluciones: 

1-Abre, consulta y cierra después en todas tus consultas. Eso enlentece mucho el proceso y es mucho código a añadir.

2-Crea una función que compruebe si la conexión está abierta connection.opened y si no lo está que la abra y paralelamente establece un timer, con un ciclo inferior al del servidor, que te cierre la conexión desde la parte cliente antes de que te la corten.

Yo llegué a establecer un sistema con dos conexiones gemelas, salvo en el nombre y las usaba alternativamene abriéndolas y cerrandolas de modo asíncrono... pero no llegué a implementarlo por lo que no sé si funcionaría en producción.

No sé sí te lío o te ayudo.

Saludos


-----------------------------------
gambafeliz
Jueves, 25 Julio 2019, 08:27

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Se que existe actualizaciones e inserciones a tiempo real.

Partiendo de este conocimiento por que no creas o manejas el concepto de actualizaciones e inserciones por lote. Y trabajas con una primera carga de datos en una cache local. De esta manera tan solo cuando vas a cargar la base de datos con novedades al ser por lote, la base de datos de sincronizará adecuadamente, por otra parte así evitas estos problemas que se subsanan con tiempos de lotaje sobre la base de datos.

Es solo una opinión, pero se admite ataques.  :evil:  8)  :lol:

Nota: Y soy consciente que aquí solo se maneja la lectura en la pregunta, por lo tanto creo que el concepto de una carga de datos Internet-Cache local es mucho más factible. Se supone que el usuario lo hace al principio y no conecta hasta que de verdad lo necesite. Esto estaría bien solo para casos de poco movimiento de datos y de corto tiempo de uso de la cache local, si hay mucha concurrencia los datos de la cache local serian muy obsoletos. Aunque esto es válido si deseamos saber los datos pero antes de sus confirmación al usuario el programa confirma con un refresco la veracidad de los mismos.

 :mryellow: Me vais a crucificar.


-----------------------------------
shordi
Jueves, 25 Julio 2019, 10:43

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="gambafeliz" post="45300"]Se que existe actualizaciones e inserciones a tiempo real.

Partiendo de este conocimiento por que no creas o manejas el concepto de actualizaciones e inserciones por lote. Y trabajas con una primera carga de datos en una cache local. De esta manera tan solo cuando vas a cargar la base de datos con novedades al ser por lote, la base de datos de sincronizará adecuadamente, por otra parte así evitas estos problemas que se subsanan con tiempos de lotaje sobre la base de datos.

Es solo una opinión, pero se admite ataques.  :evil:  8)  :lol:

Nota: Y soy consciente que aquí solo se maneja la lectura en la pregunta, por lo tanto creo que el concepto de una carga de datos Internet-Cache local es mucho más factible. Se supone que el usuario lo hace al principio y no conecta hasta que de verdad lo necesite. Esto estaría bien solo para casos de poco movimiento de datos y de corto tiempo de uso de la cache local, si hay mucha concurrencia los datos de la cache local serian muy obsoletos. Aunque esto es válido si deseamos saber los datos pero antes de sus confirmación al usuario el programa confirma con un refresco la veracidad de los mismos.

 :mryellow: Me vais a crucificar.[/quote]

Primero respondo al hilo: 
No es ese el problema. El problema es que abrir y cerra la BBDD en cada transacción es un precio enorme en tiempo de ejecución y si, como es habitual, abres la BBDD al principio del programa y la dejas abierta durante toda la ejecución, los servidores de MySql de Internet te cortan la conexión sin decirte ni mú. Cuando haces la siguiente consulta a las BBDD o a las propiedades de la Conexión, tu programa se cuelga, pues cree que la conexión sigue abierta y lanza consultas que son ignoradas por el servidor. Al no haber respuesta la única forma de finalizar sería la propiedad Time-Out que tiene la conexión, pero no funciona demasiado bien que digamos.

Ahora a lo que dices:
Me encantaría utilizar esa técnica. Mis programas manejan 3 base de datos coordinadas vía triggers con 146 tablas más una serie de vistas que cargan datos de las tres bases. Cuando al usuario se le muestran datos en un formulario o listado hay datos de todas las Bases de datos con su integridad referencial establecida y demás.
¿Te refieres a que duplique eso en sqlites? ¿O en memoria? Si tienes en cuenta que los usuarios suelen utilizar un mínimo de dos programas simultáneos que atacan a las 3 bases de datos, quedo a la espera de instrucciones para la creación y uso de esa  "caché local".

 :mryellow:  :mryellow:  :mryellow:


-----------------------------------
gambafeliz
Jueves, 25 Julio 2019, 11:51

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="shordi" post="45304"][quote user="gambafeliz" post="45300"]Se que existe actualizaciones e inserciones a tiempo real.

Partiendo de este conocimiento por que no creas o manejas el concepto de actualizaciones e inserciones por lote. Y trabajas con una primera carga de datos en una cache local. De esta manera tan solo cuando vas a cargar la base de datos con novedades al ser por lote, la base de datos de sincronizará adecuadamente, por otra parte así evitas estos problemas que se subsanan con tiempos de lotaje sobre la base de datos.

Es solo una opinión, pero se admite ataques.  :evil:  8)  :lol:

Nota: Y soy consciente que aquí solo se maneja la lectura en la pregunta, por lo tanto creo que el concepto de una carga de datos Internet-Cache local es mucho más factible. Se supone que el usuario lo hace al principio y no conecta hasta que de verdad lo necesite. Esto estaría bien solo para casos de poco movimiento de datos y de corto tiempo de uso de la cache local, si hay mucha concurrencia los datos de la cache local serian muy obsoletos. Aunque esto es válido si deseamos saber los datos pero antes de sus confirmación al usuario el programa confirma con un refresco la veracidad de los mismos.

 :mryellow: Me vais a crucificar.[/quote]

Primero respondo al hilo: 
No es ese el problema. El problema es que abrir y cerra la BBDD en cada transacción es un precio enorme en tiempo de ejecución y si, como es habitual, abres la BBDD al principio del programa y la dejas abierta durante toda la ejecución, los servidores de MySql de Internet te cortan la conexión sin decirte ni mú. Cuando haces la siguiente consulta a las BBDD o a las propiedades de la Conexión, tu programa se cuelga, pues cree que la conexión sigue abierta y lanza consultas que son ignoradas por el servidor. Al no haber respuesta la única forma de finalizar sería la propiedad Time-Out que tiene la conexión, pero no funciona demasiado bien que digamos.

Ahora a lo que dices:
Me encantaría utilizar esa técnica. Mis programas manejan 3 base de datos coordinadas vía triggers con 146 tablas más una serie de vistas que cargan datos de las tres bases. Cuando al usuario se le muestran datos en un formulario o listado hay datos de todas las Bases de datos con su integridad referencial establecida y demás.
¿Te refieres a que duplique eso en sqlites? ¿O en memoria? Si tienes en cuenta que los usuarios suelen utilizar un mínimo de dos programas simultáneos que atacan a las 3 bases de datos, quedo a la espera de instrucciones para la creación y uso de esa  "caché local".

 :mryellow:  :mryellow:  :mryellow:[/quote]

Hola, joven  :) 

No se como lo tienes montado pero una solución pasa por poner un Servidor espejo en cada sede para crear la replica y recuperar-enviar los lotes sincronizados de datos.

Solo así será posible asegurar la carga de datos que me describes.

Espero que sirva como aporte a vuestra solución.


-----------------------------------
shordi
Jueves, 25 Julio 2019, 14:11

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote]

Espero que sirva como aporte a vuestra solución.[/quote]
Ese ya no es nuestro problema. Lo fue en un pasado pero para eso montamos un servidor dedicado donde nosotros controlamos todos los time-out. Es un problema para quien maneje bases de datos en servidores "públicos" compartidos donde la capacidad de configuración es limitada.
Estamos esperando para la semana que viene un servidor que nos ha costado un pastón (Más de tres mil euros) que instalaremos en una de nuestras sedes.
Con el esperamos eliminar los servidores de las demás sedes. Ya veremos.

Saludos


-----------------------------------
gambafeliz
Jueves, 25 Julio 2019, 17:38

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Hola 

Sigo con el caso. Es que hay algunas incógnitas que despejar para el problema que plantea este hilo.

1. No sabemos si esta programación es local.
2. Si es un servidor compartido en Internet. shordi ha dado mas que suficientes ideal, además son incluso veras mente comprobadas. No se puede pedir mas.
3. Lo que propongo en su manera simplificada, es que replique las tablas (temporales) en local para visualizarlas ya que es lo que necesitas. No hace ningún mal a nadie hacerlo, siempre que la cantidad a crear sea lógicamente factible. Y hasta ahí, ya que solo estamos hablando de lecturas.

Cada problema en una entidad de datos tiene su solución a medida y no hay un estándar para cada entidad, eso es seguro. Por su puesto podemos matar moscas a cañonazos pero eso solo lo haces a base de dinero. 

¿no creen?

Ala ya esta  :mryellow:


-----------------------------------
shordi
Jueves, 25 Julio 2019, 18:00

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote]pero eso solo lo haces a base de dinero.[/quote] 
Es bueno ser jefe...
[youtube]Ai4I6y9MoYo[/youtube]


-----------------------------------
gambafeliz
Jueves, 25 Julio 2019, 18:13

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="shordi" post="45312"][quote]pero eso solo lo haces a base de dinero.[/quote] 
Es bueno ser jefe...
[youtube]Ai4I6y9MoYo[/youtube][/quote]

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

Endeluego, que te gusta meter salsa.  8)


-----------------------------------
alessandri
Sabado, 03 Agosto 2019, 01:50

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.


-----------------------------------
shordi
Sabado, 03 Agosto 2019, 06:10

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote]creo que lo mas conveniente es probar si la conexión esta abierta y reabrirla.[/quote]
Eso es lo que hago en estos momentos. Utilizo ésta función...
[code linenumbers=false syntax=gambas]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
[/code]
... 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.


-----------------------------------
gambafeliz
Sabado, 03 Agosto 2019, 10:27

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="shordi" post="45422"][quote]creo que lo mas conveniente es probar si la conexión esta abierta y reabrirla.[/quote]
Eso es lo que hago en estos momentos. Utilizo ésta función...
[code linenumbers=false syntax=gambas]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
[/code]
... 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.[/quote]

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.


-----------------------------------
shordi
Sabado, 03 Agosto 2019, 17:06

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="gambafeliz" post="45425"]
Sres. habéis abierto la caja de pandora, me voy a poner a investigarlo para resolver el puzzle.[/quote]
Más de uno estaríamos eternamente agradecidos si lo resuelves. :wink:


-----------------------------------
gambafeliz
Sabado, 03 Agosto 2019, 18:55

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="shordi" post="45432"][quote user="gambafeliz" post="45425"]
Sres. habéis abierto la caja de pandora, me voy a poner a investigarlo para resolver el puzzle.[/quote]
Más de uno estaríamos eternamente agradecidos si lo resuelves. :wink:[/quote]

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.


-----------------------------------
shordi
Sabado, 03 Agosto 2019, 19:37

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote]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.[/quote]

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.


-----------------------------------
gambafeliz
Sabado, 03 Agosto 2019, 19:50

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="shordi" post="45442"][quote]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.[/quote]

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.[/quote]

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.


-----------------------------------
alessandri
Domingo, 04 Agosto 2019, 14:05

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


-----------------------------------
shordi
Domingo, 04 Agosto 2019, 18:12

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Colaboraré en lo que me sea posible. Prometido.

Saludos


-----------------------------------
gambafeliz
Domingo, 04 Agosto 2019, 18:50

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="shordi" post="45458"]Colaboraré en lo que me sea posible. Prometido.

Saludos[/quote]

Yo si shordi se apunto yo me apunto como saco de sparring, si me dejáis claro está. Nota: me parece que va a ser divertido este patio de clase.


-----------------------------------
gambafeliz
Lunes, 05 Agosto 2019, 16:55

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="alessandri" post="45131"]Hola amigos,

Necesito saber como evitar que mi software se cuelgue ante un desconexión
del la base de datos. 

Lo que pasa es que en medio de cierta consulta puede ocurrir una desconexión
entonces no recibo ningún mensaje de error solo se congela el programa.

Para conectar uso este código:

            conn = New Connection
            conn.Host = DBhostname
            conn.Name = DBnom
            conn.Type = "mysql"
            conn.Port = "3306"
            conn.User = UserDB
            conn.Password = passDB
            Try conn.Open

Gracias.[/quote]

Sabrías describirme la última vez que te ha funcionado bien todo. Te pongo un ejemplo.

¿Que tipo de servidor tenia S.O., si era remoto, etc?
¿Cuantas computadoras, S.O., etc?
¿Tipo de red?
¿Que tipo de Base de datos?
¿Es de pago y con mantenimiento la Base de datos?
¿Con que programa accedías, osea estaban hecho con Gambas?

Créame una fotografía para que me ayude a pensar mas lejos.

=== Nota

Por ahora se cuelga hasta el equipo en las siguientes condiciones:
1. Desde la Konsola vía MySQL remota
2. Desde una conexión remota a través de Gambas3

Esto casi seguro que es de la conexión remota, del servidor, de la base de datos, pero no del equipo local. Ya que todavía no ha habido un caso como para decir que desde local no falla. Ya sabes si falla en local siempre desde todas las formas posibles es de fuera. Aunque voy a probarlo desde otro sistema operativo para confirmar que es de fuera y no de drivers de conexión o incluso un bug indeterminado por ahora, como para decirlo por aquí.


-----------------------------------
shordi
Lunes, 05 Agosto 2019, 22:40

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Informe de progresos:

He estado mirando la configuración de tu servidor MySQL y no he visto nada raro. Los timeouts que tiene marcados son los mismos que tenemos, por ejemplo, en el servidor del curro.

(Añadir que con el servidor del curro desde casa no se me cuelga nunca y desde la oficina sí).

He hecho el pequeño proyecto que adjunto al que sólo tienes que cambiar la clave en el evento open de fMain para que funcione.

Lo he ejecutado y lo he dejado reposar cosa de dos horas. No se ha colgado ni me ha hecho nada raro.

El /var/log/mysql/error.log, hay avisos de desconexión por timeout de algunas conexiones (alguien desde madrid, según he podido ver). Pero a mí no me ha desconectado nunca.
Sí aparecen, por el contrario ciertos avisos de datos incorrectos en algunas de mis conexiones que pueden deberse a login malos o yo qué se...

Cosas que puede pasar: Si el servidor no es una máquina dedicada y es un servidor virtual, la máquina real puede imponer timeouts distintos a los que tu configures (leído por ahí en algún foro que no sé citar ahora)
Si no es eso (en el caso de mis conexiones desde la oficina) puede ser que el proveedor de servicios de internet de la máquina cliente sea quien corte la conexión. (Es lo que sospecho que me pasa a mí). Para comprobar eso, voy a dejar el programa adjunto toda la noche conectado a ver qué pasa mañana (el timeout está fijado en 8 (28800 segundos) horas, lo dejaré unas seis o siete).
Si no se me cuelga después de eso y a vosotros sí... pues será el proveedor de internet del cliente o... ni puta idea, vamos.
Probad y me contáis.

Saludos


-----------------------------------
shordi
Lunes, 05 Agosto 2019, 22:58

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Una última cosa se me ocurre: ¿Qué política de DHCP tiene tu proveedor de servicios respecto a tu nodo? Quiero decir que es posible (he leído por ahí) que tu proveedor te asigne una ip distinta en un tiempo de cinco minutos o cosas así... No estaría de más esa comprobación, mira tu ip pública antes del cuelgue y otra vez después del mismo, a ver qué averiguas.


-----------------------------------
alessandri
Martes, 06 Agosto 2019, 01:12

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Gracias Shordi, ya lo descargue.

también lo dejare corriendo hasta mañana a ver que pasa.


-----------------------------------
shordi
Martes, 06 Agosto 2019, 06:21

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Ningún problema por mi parte.
 [img]https://foro.gambas-es.org/files/images/38/captura_de_pantalla_de_2019_08_06_07_19_01.png[/img] 
A eso de las 2 de la mañana pulsé el botón y perfecto. Esta mañana lo mismo.
Es la misma mierda que arrastro con mi programa de los abogados. En unos sitios se cuelga y en otros no.

 :cry:  :cry:  :cry:


-----------------------------------
alessandri
Martes, 06 Agosto 2019, 10:40

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Hola amigos.

Esta interesante el asunto, ahora no se cuelga.
estos son mis resultados:

Inicio a las 20:47:51
indicadores hay 9 a las 05:29:00

Se que vamos a descubrir la causa.


-----------------------------------
shordi
Martes, 06 Agosto 2019, 11:25

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="alessandri" post="45468"]Hola amigos.

Esta interesante el asunto, ahora no se cuelga.
estos son mis resultados:

Inicio a las 20:47:51
indicadores hay 9 a las 05:29:00

Se que vamos a descubrir la causa.[/quote]

Prueba con tu software... con éste servidor o prueba mi test con el servidor real,  a ver qué pasa.


-----------------------------------
alessandri
Martes, 06 Agosto 2019, 17:28

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Gracias shordi.

voy a probar con el servidor real, con esa forma de conexión a ver que pasa.

Además hice otra aplicación de prueba que permitirá realizar las querys DML
automáticamente según los tiempo asignados vía código.

Uso:
1- en el module1 deben agregar la credenciales para conectarse
2- dar clic en inicio de prueba. (realizara  INSERT,DELETE,UPDATE,SELECT)

Se genera un log en un textarea indicando las veces que se ejecuta cada query y cuando inicio la prueba.

Falta:
1- un algoritmo que verifique si en el momento que se desconecta mysql también se corta la conexión TCP/IP.
   esto podría hacerse "supongo" haciendo ping a una pagina web o al mismo servidor mientras se ejecutan las querys
   y viendo los resultados. Es decir, debemos saber si la conexión TCP/IP realmente es constante como cualquiera podría pensar,
  sabemos que es variable pero no sabemos si en algún momento se corta o llega al cero absoluto (por así decirlo), y es cuando
 nos cuelga el programa.

2- el log debe quedar en un archivo de texto, ya que si se cuelga tendremos la data mas manejable.

Gracias por todo.


-----------------------------------
alessandri
Miercoles, 07 Agosto 2019, 00:26

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Amigos...

¿De casualidad han oído hablar del experimento de la doble rejilla ?

"Cuando no lo observo se comporta como onda, cuando lo observo se convierte en
un P&$### partícula"

Ahora no da error ni a tiros...

Puse a descargar una imagen de LINUX MINT 19.2, Mas una película en Netflix y un canal en youtube
y no se cuelga.  :? 

[url=https://postimg.cc/2bsdtgYb][img]https://i.postimg.cc/2bsdtgYb/resultados-alessandri1.png[/img]
Mas de 11,900 registros en 7 horas y no hay problema.
el fantasma sigue ahí. :(


-----------------------------------
shordi
Miercoles, 07 Agosto 2019, 00:53

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
A mí tampoco se me ha colgado.
 [img]https://foro.gambas-es.org/files/images/38/captura_de_pantalla_de_2019_08_07_01_51_51.png[/img]


-----------------------------------
alessandri
Miercoles, 07 Agosto 2019, 18:47

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Saludos.
aquí los mismos resultados.

[url=https://postimg.cc/5jNx54L0][img]https://i.postimg.cc/5jNx54L0/resultados-alessandri2.png[/img]


-----------------------------------
shordi
Miercoles, 07 Agosto 2019, 18:50

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Sólo queda mirar dos cosas: Si tu software "real" tiene algún bug en su manejo de la BD (no sólo en la apertura) y si estas pruebas se les cuelgan a tus clientes en sus ordenadores.


-----------------------------------
jguardon
Miercoles, 07 Agosto 2019, 23:04

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Una pregunta tonta sin haber probado la conexión ni los programas de test:

¿Será que precisamente el uso continuado de los programas de diagnóstico son los que mantienen la conexión viva y por eso no falla ahora?

Si finalmente es así, sólo habría que añadir una especie de "keep-alive" a la conexión en el programa original para evitar esos cortes. Ojalá sea eso, porque de ser así la solución es bien sencilla.

Saludos


-----------------------------------
alessandri
Jueves, 08 Agosto 2019, 01:37

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
hola.

Gracias shordi. buena idea probar en la empresa con el probador.

Con respecto a lo que sugiere el señor JGuardon, Ya mi software incorpora 
un contador de 30 segundos que ejecuta una query para que no se cuelgue,
pero el problema persiste. Además el primer probador que suministro shordi
estaba dirigido a verificar los tiempo de inactividad, y se pudo verificar que 
tras 6 horas de inactividad la conexión no se corto.

Después de hacer la prueba en la empresas, y si no encuentro nada entonces
seria bueno probar con un probador hecho en Python o Java, si ambos se
cuelgan el problema apuntaría al Proveedor de conexión.
Gracias.


-----------------------------------
gambafeliz
Jueves, 08 Agosto 2019, 10:42

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="alessandri" post="45502"]hola.

Gracias shordi. buena idea probar en la empresa con el probador.

Con respecto a lo que sugiere el señor JGuardon, Ya mi software incorpora 
un contador de 30 segundos que ejecuta una query para que no se cuelgue,
pero el problema persiste. Además el primer probador que suministro shordi
estaba dirigido a verificar los tiempo de inactividad, y se pudo verificar que 
tras 6 horas de inactividad la conexión no se corto.

Después de hacer la prueba en la empresas, y si no encuentro nada entonces
seria bueno probar con un probador hecho en Python o Java, si ambos se
cuelgan el problema apuntaría al Proveedor de conexión.
Gracias.[/quote]

Alguien a barajado la posibilidad de que sea lo contrario, osea que no sea que se corta por timeout sino por sobrecarga de accesos a la base de datos que creo recordar que puede ser 38 conexiones simultaneas (ojo eso creo) 

Lejos de las cifras, la pregunta es, ¿podría ser limitación de conexiones simultaneas? (ojo conexiones no son usuarios conectados, ok)


-----------------------------------
tincho
Jueves, 08 Agosto 2019, 14:29

Re: Evitar Cuelgue Por Desconexion También
-----------------------------------
Hola a todos, me acoplo recién a este hilo luego de leer todo el post.
Por lo que veo los problemas de comunicación que describen son misteriosas, como bien lo dicen aquí.
No conozco mucho de estos temas pero por lo que he visto las aplicaciones web, que corren en un servidor a tal efecto, como apache por ejemplo, trabajan con una base de datos en el mismo servidor o de forma local, pero no enlazan a través de internet.
Creo que lo que falta aquí es un programa servidor que gestione la recepción de datos (tal vez el envío) y de esta manera el programa gambas (cliente) solo "hablaría" con un programa servidor (que puede ser gambas o no) y nunca con la base de datos.
He leído alguna vez que no es para nada conveniente dejar "expuesto" el servidor de bases de datos en internet" de hecho si se fijan en la configuración de mysql viene comentado donde habilita a " * " de direcciones.
En resumidas cuantas, me parece que hay que partir el problema en dos. Dos programas uno cliente y otro servidor.
Saludos.


-----------------------------------
alessandri
Jueves, 08 Agosto 2019, 15:02

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="gambafeliz" post="45504"][quote user="alessandri" post="45502"]hola.

Gracias shordi. buena idea probar en la empresa con el probador.

Con respecto a lo que sugiere el señor JGuardon, Ya mi software incorpora 
un contador de 30 segundos que ejecuta una query para que no se cuelgue,
pero el problema persiste. Además el primer probador que suministro shordi
estaba dirigido a verificar los tiempo de inactividad, y se pudo verificar que 
tras 6 horas de inactividad la conexión no se corto.

Después de hacer la prueba en la empresas, y si no encuentro nada entonces
seria bueno probar con un probador hecho en Python o Java, si ambos se
cuelgan el problema apuntaría al Proveedor de conexión.
Gracias.[/quote]

Alguien a barajado la posibilidad de que sea lo contrario, osea que no sea que se corta por timeout sino por sobrecarga de accesos a la base de datos que creo recordar que puede ser 38 conexiones simultaneas (ojo eso creo) 

Lejos de las cifras, la pregunta es, ¿podría ser limitación de conexiones simultaneas? (ojo conexiones no son usuarios conectados, ok)[/quote]

Bueno. yo hice un probador hace unos años y conecte 200 usuarios a la db y no se colgó. se puso un 40% mas lento pero se colgó.
y utilice el mysql workbench para ver los usuarios conectados y corrobore que eran 200. y sigue el misterio,  :|


-----------------------------------
alessandri
Jueves, 08 Agosto 2019, 15:11

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="tincho" post="45527"]Hola a todos, me acoplo recién a este hilo luego de leer todo el post.
Por lo que veo los problemas de comunicación que describen son misteriosas, como bien lo dicen aquí.
No conozco mucho de estos temas pero por lo que he visto las aplicaciones web, que corren en un servidor a tal efecto, como apache por ejemplo, trabajan con una base de datos en el mismo servidor o de forma local, pero no enlazan a través de internet.
Creo que lo que falta aquí es un programa servidor que gestione la recepción de datos (tal vez el envío) y de esta manera el programa gambas (cliente) solo "hablaría" con un programa servidor (que puede ser gambas o no) y nunca con la base de datos.
He leído alguna vez que no es para nada conveniente dejar "expuesto" el servidor de bases de datos en internet" de hecho si se fijan en la configuración de mysql viene comentado donde habilita a " * " de direcciones.
En resumidas cuantas, me parece que hay que partir el problema en dos. Dos programas uno cliente y otro servidor.
Saludos.[/quote]

Muy interesante. 
Supongo que bajo este modelo el programa se comportaría un poco asíncrono y cualquier corte  se podría manejar vía código y evitar el cuelgue,
entonces faltaría evaluar el rendimiento de la aplicación.

Si alguien tiene a mano algún ejemplo para desarrollar cliente servidor favor facilitarlos.
Gracias.


-----------------------------------
gambafeliz
Jueves, 08 Agosto 2019, 17:16

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="alessandri" post="45455"]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 [b]TimeOut[/b] 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
[b]servidor: [/b]
Ubuntu 14.04 32 bits, 200 GB de disco SD, ubicado en NewYork, Empresa DigitalOcean, 8 Cores 2.8 MHZ
[b]DBMS:[/b]
MysqlServer  5.5.62-0ubuntu0.14.041, conectado vía socket /var/run/mysqld.sock, port: 3306
[b]Carga de datos:[/b]
Base de datos cargada con 211 MB de data, 120 tablas
[b]Clientes se conectan:[/b]
desde República Dominicana, mediante la red Claro
[b]Cantidad de clientes:[/b]
se ha creado un solo cliente en Mysql y lo usan 16 computadoras
[b]Carga en el servidor estimada:[/b]
800 facturas al día que afectan al menos 4 tablas, y muuuuuchos select para buscar los productos, pocas sentencias DELETE
[b]seguridad[/b]
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. :)[/quote]

Cuando dices disco SD, ¿te refieres a disco SSD? 

Pues te voy a decir que mas vale que sea un Disco SSD especializado en servicios de Red para servidores porque sino es, es posible que este sea uno de tus principales problemas a tener en cuenta en tu escenario. (Parece que es un buen disco para servicios de servidor pero como no dices cual es exactamente pues te lo digo por que según que SSD tienes contra-indicaciones)

Otras cosas, ¿por que usas como servidor Ubuntu?, y MySQL Server te has fijado que sus descargas esta destinadas para otros sistemas operativos aunque contempla Linux en general.

Por otra parte me parece mucha maquina para tan poco trabajo o carga de trabajo.

Lo de aplicación cliente-servidor esta bien para un caso como el tuyo pero en Gambas yo no te puedo aportar nada. Soy nuevo aquí en Gambas. Pero si se lo que habláis para cliente-servidor.


-----------------------------------
gambafeliz
Jueves, 08 Agosto 2019, 18:30

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="alessandri" post="45531"][quote user="tincho" post="45527"][/quote]

Una cuando estuve probando la conexión se me colgó como te dije, pero no te dije que estuve probando y probando acceso a la base de datos y sin parar no se me colgaba. Ahora, claro, no estuve horas, solo minutos.

Tengo una pregunta. 

En una oficina están x clientes y la base de datos esta en New York; supongo que es por que pertenece este servidor a otra red de cliente que acceden también, ¿no?, osea es inviable tener la oficina con un servidor local, supongo que este es el caso. ¿es así?

Estoy yéndome de la historia.

Me contestas si quieres, seguiré pensando que debemos hacer. Lo cierto en la historia es que falla el real y el que has puesto para la prueba. Hay lo dejo. Huele a fallo de la red de internet o a la configuración que hacéis al servidor.

Ahí lo dejo.


-----------------------------------
alessandri
Jueves, 08 Agosto 2019, 20:33

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="gambafeliz" post="45534"][quote user="alessandri" post="45455"]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 [b]TimeOut[/b] 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
[b]servidor: [/b]
Ubuntu 14.04 32 bits, 200 GB de disco SD, ubicado en NewYork, Empresa DigitalOcean, 8 Cores 2.8 MHZ
[b]DBMS:[/b]
MysqlServer  5.5.62-0ubuntu0.14.041, conectado vía socket /var/run/mysqld.sock, port: 3306
[b]Carga de datos:[/b]
Base de datos cargada con 211 MB de data, 120 tablas
[b]Clientes se conectan:[/b]
desde República Dominicana, mediante la red Claro
[b]Cantidad de clientes:[/b]
se ha creado un solo cliente en Mysql y lo usan 16 computadoras
[b]Carga en el servidor estimada:[/b]
800 facturas al día que afectan al menos 4 tablas, y muuuuuchos select para buscar los productos, pocas sentencias DELETE
[b]seguridad[/b]
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. :)[/quote]

Cuando dices disco SD, ¿te refieres a disco SSD? 

Pues te voy a decir que mas vale que sea un Disco SSD especializado en servicios de Red para servidores porque sino es, es posible que este sea uno de tus principales problemas a tener en cuenta en tu escenario. (Parece que es un buen disco para servicios de servidor pero como no dices cual es exactamente pues te lo digo por que según que SSD tienes contra-indicaciones)

Otras cosas, ¿por que usas como servidor Ubuntu?, y MySQL Server te has fijado que sus descargas esta destinadas para otros sistemas operativos aunque contempla Linux en general.

Por otra parte me parece mucha maquina para tan poco trabajo o carga de trabajo.

Lo de aplicación cliente-servidor esta bien para un caso como el tuyo pero en Gambas yo no te puedo aportar nada. Soy nuevo aquí en Gambas. Pero si se lo que habláis para cliente-servidor.[/quote]

si me refiero a disco duro solido SSD. y uso ubuntu porque me ha resultado mas facil ciertas configuraciones.


-----------------------------------
alessandri
Jueves, 08 Agosto 2019, 20:42

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="gambafeliz" post="45536"][quote user="alessandri" post="45531"][quote user="tincho" post="45527"][/quote]

Una cuando estuve probando la conexión se me colgó como te dije, pero no te dije que estuve probando y probando acceso a la base de datos y sin parar no se me colgaba. Ahora, claro, no estuve horas, solo minutos.

Tengo una pregunta. 

En una oficina están x clientes y la base de datos esta en New York; supongo que es por que pertenece este servidor a otra red de cliente que acceden también, ¿no?, osea es inviable tener la oficina con un servidor local, supongo que este es el caso. ¿es así?

Estoy yéndome de la historia.

Me contestas si quieres, seguiré pensando que debemos hacer. Lo cierto en la historia es que falla el real y el que has puesto para la prueba. Hay lo dejo. Huele a fallo de la red de internet o a la configuración que hacéis al servidor.

Ahí lo dejo.[/quote]

El caso real es que la empresa tiene 3 sucursales a unos 10 km de distancia cada una con al menos 4 puntos de ventas (área de caja). Lógicamente no podemos usar cableado UTP.
La mejor opción para ellos es ubicar 3 torres y armar una red inalámbrica, pero no quieren hacer la inversión, así que optaron por alquilar un servidor.
Otra opción seria utilizar un servidor en una de las sucursales para todos acceder hay, pero ya la probé y hay si es verdad que las desconexiones son cada
15 minutos :( . Yo creo que el problema para esta ultima es que la velocidad de subida maxima que ofrecen el proveedor de internet es 128 KB.


-----------------------------------
shordi
Jueves, 08 Agosto 2019, 21:04

Re: Evitar Cuelgue Por Desconexion También
-----------------------------------
[quote user="tincho" post="45527"]Hola a todos, me acoplo recién a este hilo luego de leer todo el post.
Por lo que veo los problemas de comunicación que describen son misteriosas, como bien lo dicen aquí.
No conozco mucho de estos temas pero por lo que he visto las aplicaciones web, que corren en un servidor a tal efecto, como apache por ejemplo, trabajan con una base de datos en el mismo servidor o de forma local, pero no enlazan a través de internet.
Creo que lo que falta aquí es un programa servidor que gestione la recepción de datos (tal vez el envío) y de esta manera el programa gambas (cliente) solo "hablaría" con un programa servidor (que puede ser gambas o no) y nunca con la base de datos.
He leído alguna vez que no es para nada conveniente dejar "expuesto" el servidor de bases de datos en internet" de hecho si se fijan en la configuración de mysql viene comentado donde habilita a " * " de direcciones.
En resumidas cuantas, me parece que hay que partir el problema en dos. Dos programas uno cliente y otro servidor.
Saludos.[/quote]
Eso no es la solución. Las aplicaciones web tienen otra filosofía y otra estructura distinta, derivada en principio de los límites que la web impone. Ese no es el caso de gambas y la interposición de una capa intermedia sólo añadiría complejidad, ralentización y abriría toda una fuente de problemas fácil de imaginar.
Gambas funciona perfectamente con las bases de datos, tanto de servidores de internet compartidos, servidores virtuales y servidores dedicados. Funciona con los serividores de pago y con servidores propios que pongas en tu empresa o en tu casa. Eso lo sé, lo digo y reafirmo por los quince años de experiencia en el tema.
Tan sólo desde hace unos meses, desde que cambiamos a Movistar, comenzaron estos problemas de cuelgues por lo que, aunque no he conseguido descubrir dónde está, sé que el problema no es gambas.


-----------------------------------
gambafeliz
Jueves, 08 Agosto 2019, 21:24

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="alessandri" post="45541"][quote user="gambafeliz" post="45536"][quote user="alessandri" post="45531"][quote user="tincho" post="45527"][/quote]

Una cuando estuve probando la conexión se me colgó como te dije, pero no te dije que estuve probando y probando acceso a la base de datos y sin parar no se me colgaba. Ahora, claro, no estuve horas, solo minutos.

Tengo una pregunta. 

En una oficina están x clientes y la base de datos esta en New York; supongo que es por que pertenece este servidor a otra red de cliente que acceden también, ¿no?, osea es inviable tener la oficina con un servidor local, supongo que este es el caso. ¿es así?

Estoy yéndome de la historia.

Me contestas si quieres, seguiré pensando que debemos hacer. Lo cierto en la historia es que falla el real y el que has puesto para la prueba. Hay lo dejo. Huele a fallo de la red de internet o a la configuración que hacéis al servidor.

Ahí lo dejo.[/quote]

El caso real es que la empresa tiene 3 sucursales a unos 10 km de distancia cada una con al menos 4 puntos de ventas (área de caja). Lógicamente no podemos usar cableado UTP.
La mejor opción para ellos es ubicar 3 torres y armar una red inalámbrica, pero no quieren hacer la inversión, así que optaron por alquilar un servidor.
Otra opción seria utilizar un servidor en una de las sucursales para todos acceder hay, pero ya la probé y hay si es verdad que las desconexiones son cada
15 minutos :( . Yo creo que el problema para esta ultima es que la velocidad de subida maxima que ofrecen el proveedor de internet es 128 KB.[/quote]

Perdona que pregunte mas de lo que va en el caso, pero estoy pensando mas opciones y mi deseo es ayudarte.

Me comentas que tienes 3 sucursales separadas y mínimo 4 puntos de ventas por sucursal. Me supongo que la info que obtienes en caja es principalmente el stock, precio compartido, para unificar y concentrar almacenes.

Supongo que lo mas grave es el stock, ¿es así?, Por que los datos de facturas pueden asignarse incluso numeraciones separadas. A lo mejor es cuestión de estudiar los datos y así no sobrecargar nada a nivel local.

... Sigo pensando ... bussy


-----------------------------------
gambafeliz
Jueves, 08 Agosto 2019, 22:53

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Por que no cambiamos la forma de ver el problema de nuevo. En vez de pensar por que se cuelga, por que no pensamos que favorece para que no se cuelgue. 

Así podemos ver mas opciones para resolver el problema.

Demos le la vuelta...

Pensadlo....


-----------------------------------
alessandri
Viernes, 09 Agosto 2019, 01:25

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Hola hermano.

No se disculpe por preguntar, pregunte todo lo que quiera, lo que queremos es resolver.

Bien.
El software que hemos desarrollado es un sistema de contabilidad por partida doble que maneja
un gran numero de operaciones, no solo facturación. y hay una serie de datos que deben estar
actualizados y centralizados en una solo base de datos para poder hacer análisis financieros y
otros. Por eso no podemos intentar tener varios servidores con información fraccionada. 

Adicional a eso te explico que La ley tributaria de mi país exige que cada factura emitida por cualquier
sucursal debe llevar una secuencia llamada Número de Comprobante Fiscal NCF. por ejemplo:
Si la secuencia de NCF esta en el B0200000777 y en la sucursal A, B, C se emite una factura por cada una
debe quedar así:
A: B0200000777
B: B0200000778
C: B0200000779
No pueden tener secuencias separas. si hago secuencias se paradas pueden multar la empresa :( 
Para lograr que esta secuencia funcionara en mysql fue todo un reto, por poco y me cambio a Postgresql,
o a Oracle, que tienen funciones especiales para generar secuencias. por suerte logre hacer una función 
en la DB la cual probé con unas 50 conexiones que solicitaban secuencias cada segundo durante una hora
simultáneamente y ningún número se repitió.

[b]Una observación curiosa: [/b]en una de las empresas que manejo me informaron que en un pc de la oficina
realizaron cierta operación y se colgó, pero las demás pc de facturación siguieron normal.
*Verifique el cable de red y esta todo bien.
¿Les parece extraño eso :| ?


-----------------------------------
gambafeliz
Viernes, 09 Agosto 2019, 07:13

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="alessandri" post="45556"]Hola hermano.

No se disculpe por preguntar, pregunte todo lo que quiera, lo que queremos es resolver.

Bien.
El software que hemos desarrollado es un sistema de contabilidad por partida doble que maneja
un gran numero de operaciones, no solo facturación. y hay una serie de datos que deben estar
actualizados y centralizados en una solo base de datos para poder hacer análisis financieros y
otros. Por eso no podemos intentar tener varios servidores con información fraccionada. 

Adicional a eso te explico que La ley tributaria de mi país exige que cada factura emitida por cualquier
sucursal debe llevar una secuencia llamada Número de Comprobante Fiscal NCF. por ejemplo:
Si la secuencia de NCF esta en el B0200000777 y en la sucursal A, B, C se emite una factura por cada una
debe quedar así:
A: B0200000777
B: B0200000778
C: B0200000779
No pueden tener secuencias separas. si hago secuencias se paradas pueden multar la empresa :( 
Para lograr que esta secuencia funcionara en mysql fue todo un reto, por poco y me cambio a Postgresql,
o a Oracle, que tienen funciones especiales para generar secuencias. por suerte logre hacer una función 
en la DB la cual probé con unas 50 conexiones que solicitaban secuencias cada segundo durante una hora
simultáneamente y ningún número se repitió.

[b]Una observación curiosa: [/b]en una de las empresas que manejo me informaron que en un pc de la oficina
realizaron cierta operación y se colgó, pero las demás pc de facturación siguieron normal.
*Verifique el cable de red y esta todo bien.
¿Les parece extraño eso :| ?[/quote]

Lo del cuelgue individual "no" no me sorprende ni me hace desviarme de nada. Es totalmente normal y posible. 

Yo creo que esto hay que tratarlo como si de un problema de niños pequeños estuviéramos y sin entrar en pánico.

Yo voy a intentar olvidarme de Gambas y su conexión.

Pienso que en esta situación habría que comprobar, que las conexiones a la base de datos funcionan desde cualquier aplicación remota sea directamente MySQL y todas las variantes posible, php, etc....

Si esto funciona debemos centrarnos en algo que por ejemplo shordi he notado en su conversación. Es que hubo un momento en el tiempo que si funcionaba todo bien y otro posterior que no. Habría que recrear el momento exacto donde todo iba bien y por que. Que vario en el ecosistema. Ejemplo:

-versión Gambas del momento. Sistema operativo y version. Controlador MySQL, si tras recrearlo se cuelga. Solo existe dos caminos. Que la versión MySQL en el servidor tiene una versión no valida respecto al momento que funcionaba, que algo no se ha configurado bien, que el disco duro no es válido ya que existen errores de escritura que detecta MySQL y corta los servicios.

Pero sinceramente la conexión al servidor para mi, no esta nada claro. Yo la veo como un cable UTP pero a lo vestía. No es mas que energía pasado por el cable y transmitiendo de un Servidor hasta el tuyo. Si es fallo de perdida de sincronización, sabemos que lo va a replicar hasta que tenga una respuesta valida. No se esto para mi no es. 

El secreto se esconde en el servidor MySQL y en el controlador Gambas que también es posible que no se este desarrollando la comunicación con el controlador bien. Pero esto es un fallo del desarrollador.

En fin esta es mi opinión.

== Datos

El programa de shordi se me ha colgado en la prueba hoy.

Tengo pendiente la prueba de alessandri

== mas cosas

Acabo de ver esto de Google:

https://cloud.google.com/sql/?hl=es

Piensa en hacer una prueba para ver si es problema de la conexión, de mysql, del proveedor, de gambas. Google se supone que va a ir bien.


-----------------------------------
shordi
Viernes, 09 Agosto 2019, 09:16

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote] Si es fallo de perdida de sincronización, sabemos que lo va a replicar hasta que tenga una respuesta valida. [/quote]
O sea que esperará y esperará y esperará... si esta respuesta no le llega ya tienes el (posible) error.


-----------------------------------
shordi
Viernes, 09 Agosto 2019, 09:17

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote]El programa de shordi se me ha colgado en la prueba hoy.[/quote]
¿Qué proveedor de servicios usas?¿wifi o cable?¿Que hoy se te ha colgado quiere decir que otro día no se colgó?


-----------------------------------
gambafeliz
Viernes, 09 Agosto 2019, 11:06

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="shordi" post="45559"][quote] Si es fallo de perdida de sincronización, sabemos que lo va a replicar hasta que tenga una respuesta valida. [/quote]
O sea que esperará y esperará y esperará... si esta respuesta no le llega ya tienes el (posible) error.[/quote]

Hola shordi :) espero que estés disfrutando de Australia :)

Pues no te voy a decir no, pero se que este tema te remueve y con causa. Lo siento, pero para mi no es tan probable como para ti, y se que lo has comprobado con la almohada mil veces.

En fin es solo una opinión y seguro que tu tienes mas razón que yo.

Saludos.


-----------------------------------
gambafeliz
Viernes, 09 Agosto 2019, 11:14

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="shordi" post="45560"][quote]El programa de shordi se me ha colgado en la prueba hoy.[/quote]
¿Qué proveedor de servicios usas?¿wifi o cable?¿Que hoy se te ha colgado quiere decir que otro día no se colgó?[/quote]

gambafeliz - shordi

       0         -      1
       0         -      2

-Mi proveedor es Yoigo (me parece que hoy en día es Movistar) 
-Utilizo wifi
-No he usado tu aplicación hasta hoy nada más y hoy se me a colgado en pocos minutos no hora ni horas como se dice por aquí. Y MySQL directamente tambien. Y conexiones de otras formas también. Sin embargo, conexiones sin parar y ping al servidor y a MySQL no falla. 

Yo tengo el presentimiento que es un fallo del Servidor en origen y no de los clientes ni de la conexión, aunque se que me vas a echar en cara lo de Movistar. Y que sepas que no es alma de mi devoción me refiero a Movistar, ok. (Vamos que no lo estoy defendiendo)

Una pregunta interesante es el proveedor de servicio de alessandri, ¿no crees tu?, a lo mejor lo ha dicho y no me he enterado. Pero en mi es normal, estoy normalmente en la luna.


-----------------------------------
alessandri
Viernes, 09 Agosto 2019, 13:03

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Hola,
Yo soy fanático de Google, pero esos precios están  :twisted: .
el servidor de prueba esta costando US$ 40.00 Mensual, y en 
mi querida google el equivalente cuesta US$ 263.40 mensual.


-----------------------------------
gambafeliz
Viernes, 09 Agosto 2019, 13:19

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="alessandri" post="45568"]Hola,
Yo soy fanático de Google, pero esos precios están  :twisted: .
el servidor de prueba esta costando US$ 40.00 Mensual, y en 
mi querida google el equivalente cuesta US$ 263.40 mensual.[/quote]

Aaah, los precios la verdad que no lo he mirado. Yo como sabrás un copo ya por mis conversaciones era para ayudar y garantizar tu problema pero mas lejos de querer arruinarte económicamente era simplemente para verificar a lo grande.

Perdón disculpe usted :)


-----------------------------------
tincho
Viernes, 09 Agosto 2019, 13:52

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="alessandri" post="45531"]Muy interesante. 
Supongo que bajo este modelo el programa se comportaría un poco asíncrono y cualquier corte  se podría manejar vía código y evitar el cuelgue,
entonces faltaría evaluar el rendimiento de la aplicación. Si alguien tiene a mano algún ejemplo para desarrollar cliente servidor favor facilitarlos.Gracias.[/quote]
Exacto, las peticiones y cambios los gestiona el programa servidor, que es el que se comunica con la base de datos.
Ejemplos:
Existe un sistema ERP programado en python (lo siento vuott  :mryellow: ) que se llama Odoo y es de código abierto y hay varias empresas y particulares que desarrollan módulos para agregarle.
El caso es que su estructura es Cliente<-->Servidor+BBDD.
Una de las ventajas que presenta este sistema es que existe un único modulo del programa del servidor que es el que habla con la base de datos y luego toda la complejidad que se desee escalar es a parte.
En gambas no conozco ejemplos de aplicaciones de este tipo, pero tal vez existan por allí.
Saludos.


-----------------------------------
alessandri
Viernes, 09 Agosto 2019, 15:21

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
hola tricho.

En el capitulo 6 del libro de gambas 2: PROGRAMACIÓN VISUAL CON SOFTWARE LIBRE
tiene una ejemplo de una aplicación cliente - servidor, podría servir, pero no entiendo como
se puede trabajar con el objeto result bajo este modelo.

Tambien veo esa solución muy trabajosa. La ubicare como ultima alternativa.


-----------------------------------
tincho
Viernes, 09 Agosto 2019, 15:42

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="alessandri" post="45571"]hola tricho.
En el capitulo 6 del libro de gambas 2: PROGRAMACIÓN VISUAL CON SOFTWARE LIBRE
tiene una ejemplo de una aplicación cliente - servidor, podría servir, pero no entiendo como
se puede trabajar con el objeto result bajo este modelo.
Tambien veo esa solución muy trabajosa. La ubicare como ultima alternativa.[/quote]
Si seguramente con estos ejemplos se pueda llegar a hacer algo potente y útil.
Aquí hay un ejemplo de nuestro compañero Julio JSBSAN que usa Sockets
https://foro.gambas-es.org/viewtopic.php?f=5&t=1811
En el ejemplo se usa el protocolo TCP y LAN, pero supongo que no habrá problema de usar una red WAN.
Lo del [b]result[/b] no se como se puede manejar pero seguramente hay una forma de hacerlo. Tal vez no se maneje result alguno en el lado cliente, solo datos en formato XML por ejemplo.
Saludos.


-----------------------------------
gambafeliz
Viernes, 09 Agosto 2019, 19:00

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="tincho" post="45572"][quote user="alessandri" post="45571"]hola tricho.
En el capitulo 6 del libro de gambas 2: PROGRAMACIÓN VISUAL CON SOFTWARE LIBRE
tiene una ejemplo de una aplicación cliente - servidor, podría servir, pero no entiendo como
se puede trabajar con el objeto result bajo este modelo.
Tambien veo esa solución muy trabajosa. La ubicare como ultima alternativa.[/quote]
Si seguramente con estos ejemplos se pueda llegar a hacer algo potente y útil.
Aquí hay un ejemplo de nuestro compañero Julio JSBSAN que usa Sockets
https://foro.gambas-es.org/viewtopic.php?f=5&t=1811
En el ejemplo se usa el protocolo TCP y LAN, pero supongo que no habrá problema de usar una red WAN.
Lo del [b]result[/b] no se como se puede manejar pero seguramente hay una forma de hacerlo. Tal vez no se maneje result alguno en el lado cliente, solo datos en formato XML por ejemplo.
Saludos.[/quote]

No lo he visto pero este ejemplo sin mirarlo ni nada es un buen ejemplo ya que he visto estos programas con "Velazquez Visual" es ahora de Velneo:

Esta es su web pero yo solo lo vi para Windows:
https://velneo.es/

Ahora lo que estoy de acuerdo con shordi poner capas sobre capas es un error. Pero todo tiene su medida, si el sistema no es muy grande, merece la pena hacer un programa cliente-servidor para probar. Yo si estuviera en esta situación, lo probaría todo.

Por cierto alessandri has mirado precio en: https://www.oracle.com/es/cloud/

Ahora lo mejor es que el servicio esté lo más cerca de tu ubicación pero de gran calidad, claro.

Nota: Una cosa a saber, doy por echo que todos sabemos que para poner un sistema Cliente-Servidor, el servidor debe estar en una sucursal no sirve uno en New York, esto esta claro, ¿verdad?


-----------------------------------
alessandri
Viernes, 09 Agosto 2019, 20:36

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
hola.
Ya vi los precios en oracle y es mas barato que google pero mas
caro que digitalocean. ademas oracle tiene un gran inconveniente
para mi aplicación. "NO SOPORTA DISPARADORES" y es algo
que uso extensivamente en mi software para actualizar los balances.


-----------------------------------
gambafeliz
Sabado, 10 Agosto 2019, 12:18

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="alessandri" post="45577"]hola.
Ya vi los precios en oracle y es mas barato que google pero mas
caro que digitalocean. ademas oracle tiene un gran inconveniente
para mi aplicación. "NO SOPORTA DISPARADORES" y es algo
que uso extensivamente en mi software para actualizar los balances.[/quote]

Perdón pero dudo que las bases de datos Oracle no dispongan de Triggers pero, ¿si tu lo has mirado?, a mi me parece no raro sino lo siguiente.

Mira los precios de este enlace, esto es posible que de en el clavo. 

https://aws.amazon.com/es/rds/mysql/pricing/

Una información para quien le interese, creo que es muy interesante aunque no es de Gambas, creo que es útil para todos.
https://www.php.net/manual/es/features.persistent-connections.php

Pensad en las sobrecargas de los hilos de las conexiones que alessandri hizo pruebas por 200, que creo, que confunde acceso de clientes con hilos de acceso a la base de datos, y que sigo diciendo que no mas de 38 antes del super-bloqueo. Estudiar estos casos.


-----------------------------------
alessandri
Sabado, 10 Agosto 2019, 14:02

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Hola señor feliz.

Lo que pasa es que cuando alquilas una instancia de mysql te dan un usuario
que no es root, nunca podrás ser root bajo esa modalidad. 
al parecer los disparadores comprometen seriamente la seguridad de mysql
entonces no lo permiten.
Ya probé en GODADDY, ELSERVER.COM, y en RACKSPACE que es uno de los mejores proveedores
de nube, ninguno lo permite. Asumo que es lo mismo para todos los que venden
mysql bajo este modo.

Yo entiendo que si el problema es que tenemos desconexiones aleatorios debemos
lograr que nuestros software puedan lidiar con este error. La causa de momento
se nos escapa pero hay que encontrarla, aunque sea mediante el código fuente
del componente gb-mysql, o mysql-gb-db, o gb-net, que son los que realmente
no toleran esos corte aleatorios.

Bien podríamos contactar al señor Benoit :mryellow:  a ver que dice.

y ¿donde encuentro el fuente de esos componentes?, ya lo busque en browse source code en la pagina
y no lo encuentro.


-----------------------------------
gambafeliz
Sabado, 10 Agosto 2019, 16:39

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="alessandri" post="45581"]
Lo que pasa es que cuando alquilas una instancia de mysql te dan un usuario
que no es root, nunca podrás ser root bajo esa modalidad. 
al parecer los disparadores comprometen seriamente la seguridad de mysql
entonces no lo permiten.

Ya probé en GODADDY, ELSERVER.COM, y en RACKSPACE que es uno de los mejores proveedores
de nube, ninguno lo permite. Asumo que es lo mismo para todos los que venden
mysql bajo este modo.[/quote]

Exacto lo he comprobado y tienes razón. Yo como me supongo habrás notado que pensaba en Servidor en propiedad pero no virtual. Pero para resumir, alessandri tienes razón. He visto algo con Firebase pero es un "No" en general sobre los Triggers.

[quote user="alessandri" post="45581"]
Yo entiendo que si el problema es que tenemos desconexiones aleatorios debemos
lograr que nuestros software puedan lidiar con este error. La causa de momento
se nos escapa pero hay que encontrarla, aunque sea mediante el código fuente
del componente gb-mysql, o mysql-gb-db, o gb-net, que son los que realmente
no toleran esos corte aleatorios.

Bien podríamos contactar al señor Benoit :mryellow:  a ver que dice.

y ¿donde encuentro el fuente de esos componentes?, ya lo busque en browse source code en la pagina
y no lo encuentro.[/quote]

Mira ahí me pillas, yo hasta hace muy poco solo desarrollaba en Bases de datos empresariales pero no en Gambas, yo en Gambas soy un absoluto novato, pero no en lo demás.

Ahora si lo tienes tan claro, ¿por que en un arrebato dices que es una deficiencia del controlador/es de base de datos de Gambas?. shordi te dijo que es problema de tu proveedor de servicios para Internet, y no decir por decir, ya que es una persona que cuando habla previamente le ha ardido el cerebro y además con gusto te ha ayudado.

En fin, me parece bien que revises el código, a lo mejor das con tu solución. Con respecto a las fuentes ni idea, no te voy ayudar, ya que no se donde puede estar.

Otra cosa soy yo o noto un cierto enfado hacia mis comentarios. Si es así no tengas ningún reparo de decirmelo. Por mi no hay problema en dejar tu hilo. Que ya soy muy grandecito para notar cosas como estas.


-----------------------------------
shordi
Sabado, 10 Agosto 2019, 17:48

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote]Otra cosa soy yo o noto un cierto enfado hacia mis comentarios. Si es así no tengas ningún reparo de decirmelo. Por mi no hay problema en dejar tu hilo. Que ya soy muy grandecito para notar cosas como estas.[/quote]
Eres tú. No busques tres pies al gato.

 :mryellow:  :mryellow:  :mryellow:  :-P


-----------------------------------
shordi
Sabado, 10 Agosto 2019, 17:55

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="alessandri" post="45581"]Hola señor feliz.

Lo que pasa es que cuando alquilas una instancia de mysql te dan un usuario
que no es root, nunca podrás ser root bajo esa modalidad. 
al parecer los disparadores comprometen seriamente la seguridad de mysql
entonces no lo permiten.
Ya probé en GODADDY, ELSERVER.COM, y en RACKSPACE que es uno de los mejores proveedores
de nube, ninguno lo permite. Asumo que es lo mismo para todos los que venden
mysql bajo este modo.
[/quote]
Insisto: no.
Yo soy root en mi base de datos y la máquina del servidor es mía. He usado la aplicación que se cuelga durante 9 años primero en un servidor virtual, luego en un servidor propio en nuestra sede, luego en otro servidor virtual de otra compañía y actualmente en un servidor dedicado en otra más. Nunca hubo cuelgues nunca hubo problemas hasta que cambiamos las sedes a Movistar. Ahora hay cuelgues cuando conectamos desde las sedes. Desde mi casa, que no es movistar, no se me cuelga nunca.
Por tanto no culpéis a Mysql ni culpéis a Gambas el culpable no está ahí...
[quote]
Yo entiendo que si el problema es que tenemos desconexiones aleatorios debemos
lograr que nuestros software puedan lidiar con este error. La causa de momento
se nos escapa pero hay que encontrarla, aunque sea mediante el código fuente
del componente gb-mysql, o mysql-gb-db, o gb-net, que son los que realmente
no toleran esos corte aleatorios.
[/quote]
Ese es el quid de la cuestión. Hay que conseguir que Gambas identifique el problema de alguna manera en lugar de colgarse... pero sin saber dónde está el fallo es prácticamente imposible.
[quote]
y ¿donde encuentro el fuente de esos componentes?, ya lo busque en browse source code en la pagina
y no lo encuentro.[/quote]
Hace un tiempo yo hice lo mismo y sí lo encontré... pero ni idea, oiga.

Saludos


-----------------------------------
gambafeliz
Sabado, 10 Agosto 2019, 18:15

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="shordi" post="45584"][quote]Otra cosa soy yo o noto un cierto enfado hacia mis comentarios. Si es así no tengas ningún reparo de decirmelo. Por mi no hay problema en dejar tu hilo. Que ya soy muy grandecito para notar cosas como estas.[/quote]
Eres tú. No busques tres pies al gato.

 :mryellow:  :mryellow:  :mryellow:  :-P[/quote]

Perdón alessandri no va contigo, nada. Pero ante este comentario del amigo shordi, pues,  :lol:  :lol:  :lol:  :lol:


-----------------------------------
alessandri
Sabado, 10 Agosto 2019, 21:47

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Señor feliz, aquí somos todos amigos. yo muy agradecido por sus aportes.
Si algo escribí que le hizo sentir mal me disculpo :o  y seguimos investigando.

En el orden de ideas original:
* Yo doy por sentado que el problema es el proveedor de Internet
* Pero también entiendo que hay que lograr que gambas sea resistente a esas caídas
como dijo shordi.

Hay que hacer una buena investigación y entender cosas como:
¿Que es una conexión?
¿Que es lo que ocurre cuando decimos en gambas conn.Open?
¿Cuando la conexión se abre se hace un registro?, ¿donde?, ¿como se elimina?
también, ¿se debe seguir utilizando el puerto 3306?

Suerte a Todos, y feliz fin de semana :lol:


-----------------------------------
gambafeliz
Sabado, 10 Agosto 2019, 22:12

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="alessandri" post="45588"]Señor feliz, aquí somos todos amigos. yo muy agradecido por sus aportes.
Si algo escribí que le hizo sentir mal me disculpo :o  y seguimos investigando.
[/quote]

Sin problemas, yo sigo por aquí, pa lo que mandéis, en general.

Como dices Feliz Fin de Semana....

== Editado 1

He echo una simple busqueda en Google y he encontrado las fuentes de Gambas sin el más mínimo esfuerzo, ¡¡ ya te vale !!  :? 

https://gitlab.com/gambas/gambas/tree/master 

Ahora solo tienes que descargarlo y revisarlo, así como hacer un parche para ti, y si das con la cosa, pues a donarlo al mundo.

== Editado 2

Por favor, lean este información en la web:

http://gambaswiki.org/wiki/comp/gb.db?l=es&nh


-----------------------------------
gambafeliz
Martes, 13 Agosto 2019, 21:52

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Buenas noticias por ahora en todas las pruebas que he realizado no he tenido ningún corte de ninguna clase. Las pruebas siempre han sido en Gambas. También deciros que en estos momentos no he realizado prueba alguna con otros métodos de otra clase.

Con lo cual pinta bien. Seguiré probando hasta agotar el tiempo de uso del servidor y seguiré informando.


-----------------------------------
shordi
Miercoles, 14 Agosto 2019, 08:30

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote]Seguiré probando hasta agotar el tiempo de uso del servidor y seguiré informando.[/quote]

A la espera quedamos :mryellow:  :mryellow:


-----------------------------------
alessandri
Jueves, 15 Agosto 2019, 14:15

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Hola amigos.
Me pase todo un día probando alternativas y no doy con nada.
Lo ultimo que hice fue intentar detectar el error con el siguiente código.

Public Sub Timer1_Timer()
    i += 1
    If i = 3 Then
        Try Module1.conn.Exec(txtinsert.Text) 'Inserta registros cada 3 segundos
        inserciones += 1
        i = 0
    Endif
    
    Catch
      Module1.Ierror = " Formulario y SUB: " & Error.where & " Error: " & error.text
      Wait
      CapturaError.Show
End

Se suponía que con ese CATCH debería retornar un mensaje de error, al cortarse la conexión,
pero como siempre se cuelga y no dice nada. No veo la forma de resolver eso. :( , 
no me gusta sacar la bandera blanca pero aquí parece que hay que hacerlo.
Insisto, creo que deberíamos tratar de informarle a benoit.
Voy a cancelar el servidor de prueba ya que no veo progreso. Les dejo las ultimas modificatorios
que le hice al probador.

Gracias por sus aportes.


-----------------------------------
shordi
Jueves, 15 Agosto 2019, 16:52

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Esperate a mañana para cerrar el servidor. Estoy probando las inserciones y luego te cuento.


-----------------------------------
shordi
Jueves, 15 Agosto 2019, 17:06

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="alessandri" post="45623"]Hola amigos.
Me pase todo un día probando alternativas y no doy con nada.
Lo ultimo que hice fue intentar detectar el error con el siguiente código.

Public Sub Timer1_Timer()
    i += 1
    If i = 3 Then
        Try Module1.conn.Exec(txtinsert.Text) 'Inserta registros cada 3 segundos
        inserciones += 1
        i = 0
    Endif
    
    Catch
      Module1.Ierror = " Formulario y SUB: " & Error.where & " Error: " & error.text
      Wait
      CapturaError.Show
End

Se suponía que con ese CATCH debería retornar un mensaje de error, al cortarse la conexión,
pero como siempre se cuelga y no dice nada. No veo la forma de resolver eso. :( , 
no me gusta sacar la bandera blanca pero aquí parece que hay que hacerlo.
Insisto, creo que deberíamos tratar de informarle a benoit.
Voy a cancelar el servidor de prueba ya que no veo progreso. Les dejo las ultimas modificatorios
que le hice al probador.

Gracias por sus aportes.[/quote]
Ok. Veo que ya lo has cancelado. Sólo una cosita: Tal como has hecho la prueba de inserción nunca podría funcionar pues la línea
[code linenumbers=false syntax=gambas]Try Module1.conn.Exec(txtinsert.Text) 'Inserta registros cada 3 segundos[/code]
Al llevar el Try no levanta errores. Tendrías que haber puesto 
[code linenumbers=false syntax=gambas]
Try Module1.conn.Exec(txtinsert.Text) 'Inserta registros cada 3 segundos
if Error then 
      Module1.Ierror = " Formulario y SUB: " & Error.where & " Error: " & error.text
      CapturaError.Show
endif
[/code]
O simplemente quitar el Try, claro.

Una pena que no hayamos sido capaces de descubrir el problema.

Saludos.


-----------------------------------
gambafeliz
Jueves, 15 Agosto 2019, 21:05

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="shordi" post="45624"]Esperate a mañana para cerrar el servidor. Estoy probando las inserciones y luego te cuento.[/quote]

Todas mis pruebas hasta ayer sin cortes. shordi con el código que te envíe, pero no se si es aceptable o no. Y si hoy ya no he podido probar por que el servidor me ha cortado. :(

Nota: ¿no era 30 días de prueba?


-----------------------------------
alessandri
Sabado, 28 Marzo 2020, 18:04

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Hola amigos, 
Espero que estén todos bien.

Encontré algo con respecto a este viejo dolor de cabeza.

[b]Caso 1: [/b]Conecto dos ordenadores en un red local con una aplicación Gambas con acceso a mysql.
mientras voy trabajando con la aplicación desconecto el cable de Red. El programa deja de responder
pero cuando conecto el cable en pocos segundos vuelve a responder.

[b]Caso 2:[/b] Cuando el cliente se encuentra conectado vía internet al servidor y desconecto el cable de Red
la aplicación se cuelga. Al conectar el cable de Red no vuelve a funcionar.

[b]Caso 3:[/b] Con una aplicación Gambas WebForm alojada en un servidor al cual conecto vía Internet,
procedo a trabajar con ella y a continuación desconecto el cable de Red. La aplicación deja de responder,
luego espero unos 15 segundos con el cable desconectado. Finalmente procedo a conectar el cable
y una vez la conexión se habilita la aplicación vuelve a responder.
Saludos.


-----------------------------------
jguardon
Sabado, 28 Marzo 2020, 19:04

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
[quote user="alessandri" post="47713"]

[b]Caso 2:[/b] Cuando el cliente se encuentra conectado vía internet al servidor y desconecto el cable de Red
la aplicación se cuelga. Al conectar el cable de Red no vuelve a funcionar.[/quote]

Una pregunta, en el código de conexión ¿estás usando la IP del servidor o un nombre de dominio que apunta al servidor?

Esto es relevante porque implicaría algún fallo en la resolución de nombres (DNS) en caso de usar el dominio.

Saludos


-----------------------------------
alessandri
Lunes, 30 Marzo 2020, 16:48

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Hola, señor Jguardon.
Le informo que tengo dos empresas que conectan al servidor vía Internet.

a) usa la dirección Ip xxx.xxx.xxx.xx

b) empresa.ddns.net

y en ambos casos se cuelga.
He tenido suerte en algunas semanas e incluso meses que se cuelga de 2 a 5 veces,
lo cual es tolerable. Pero hay meses y semanas que es insoportable, ocurren cuelgues
cada hora.


-----------------------------------
jguardon
Lunes, 30 Marzo 2020, 18:04

Re: Evitar Cuelgue Por Desconexion
-----------------------------------
Gracias. Entonces descartamos problemas de DNS. 

Lo único que nos queda es experimentar con otro lenguaje de programación para comprobar si es un problema específico en el componente gb.db y gb.db.mysql o por el contrario pudiera ser el propio mysql.

Aunque no estoy muy activo programando, suelo ojear temas en Python con wxPython (un entorno gráfico multiplataforma) y nadie reporta ese problema con sus aplicaciones de escritorio. Intentaré sacar tiempo para hacer dos programas iguales, uno en GAmbas y otro en wxPython para comprobar si el fallo ocurre en ambos o solo en gambas.

Gracias por reportar, alessandri


