FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Consuta sobre MariaDB/MySql
Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Consuta sobre MariaDB/MySql
Posted: Tue Jan 23, 2024 01:38 PM
Mi consulta en esta oportunidad es la siguiente:

Cuando comenc茅 a usar MySql (ahora MariaDB) lo hice desarrollando una aplicaci贸n que guardaba los datos en un servidor remoto en la nube.
Por las caracteristicas propias de este tipo de servidores, adopt茅 el metodo de conectar y desconectar de la base de datos cada vez que requiero
realizar una operacion. Esa misma manera la use como estandar tanto para servidores en la nube como locales.

Hasta ahora todo bien, pero desde hace unos dias, un cliente que tiene un equipo compartido como servidor y 10 estaciones de trabajo,
ha crecido bastante desde que le instale el sistema y ahora se me esta presentando este problema: ERROR 1040



Ya vi en internet que el detalle esta en que se esta sobrepasando el numero de conexiones
a la base de datos y que se puede arreglar ajustando un parametro (MAX_CONNECTIONS).

Dicen que llevandolo a 500 es suficiente para resolver el problema.

Mi duda es 驴no hay ninguna implicacion con este aumento? consumo de recursos?, colapso de la base datos?, en fin
alguna liebre que pueda saltar m谩s adelante?

Para accesar la base de datos tengo creados 2 usuarios solamente. Usuario01 y Usuario02

El Usuario01 esta en 5 estaciones, y el usuario02 en las otras 5. Aunque por lo que entiendo no es problema
de la cantidad de usuarios sino del numero de conexiones.

驴Habra necesidad de crear un usuario por cada estacion? tengo entendido que cada usuario consume recursos.

驴quien puede sugerirme alguna soluci贸n para esto de la mejor manera posible?

Con solo cambiar el numero maximo de conexiones parece ser muy simple, y en programacion, las soluciones simples
son muy poco comunes, por lo menos en mi experiencia.

Agradecido por la ayuda que puedan prestarme.
"Los errores en programaci贸n, siempre est谩n entre la silla y el teclado..."



Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin



Carora, Estado Lara, Venezuela.
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Consuta sobre MariaDB/MySql
Posted: Tue Jan 23, 2024 03:25 PM

Number of connections should not matter.

We personally know companies with hundreds of users simultaneously connecting and working with cloud servers.

No need at all to connect and disconnect every-time. This is definitely not an efficient way.

Regards



G. N. Rao.

Hyderabad, India
Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Re: Consuta sobre MariaDB/MySql
Posted: Tue Jan 23, 2024 04:07 PM

Gracias Mr. Nages

El problema con los servidores en la nube, es que solo permiten conexiones por algunos segundos.

En mi caso lo m谩ximo son 15 seg, despu茅s de eso cierran las conexiones.

Si la mantengo "viva" haciendo "ping" se consumen muchos recursos del servidor lo que ocasiona dos cosas: la app falla, o el servidor igualmente cierra la conexi贸n, sin contar en el cobro adicional por mantener una conexi贸n permanente.

El caso que me ocupa es un servidor local, en el peor de los casos me tocar谩 cambiar todo el c贸digo fuente y dejar la conexi贸n permanente, pero me gustar铆a saber como solventa ud. el problema con los servidores de hosting de pago.


Thank you Mr. Nages

The problem with cloud servers is that they only allow connections for a few seconds.

In my case the maximum is 15 seconds, after that they close the connections.

If I keep it "alive" by "pinging", a lot of server resources are consumed, which causes two things: the app fails, or the server also closes the connection, not counting the additional charge for maintaining a permanent connection.

In the case in question it is a local server, in the worst case I will have to change the entire source code and leave the connection permanent, but I would like to know how you solve it. the problem with paid hosting servers.

"Los errores en programaci贸n, siempre est谩n entre la silla y el teclado..."



Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin



Carora, Estado Lara, Venezuela.
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Consuta sobre MariaDB/MySql
Posted: Tue Jan 23, 2024 04:16 PM

Coincido con Mr. Rao que no es necesario conectar y desconectar en cada consulta.

Tambi茅n, en el caso de la clase Dolphin es necesario mantener viva la conexi贸n, sino despues de un tiempo de inactividad puede desconectarse.

No se en el caso de la clase nativa de Fivewin como se mantiene la sesi贸n abierta.

Si tenes acceso la base de datos, una forma de verificar las conexionaes activas es usando el comando

SHOW PROCESSLIST

Puede ser tambien que en alg煤n corte quede una sesi贸n abierta, la cual puedes matar con el comando

KILL nId (nId es el id que te muestra en show processlist)

Cuando cierras la sesi贸n debes cerrar la conexi贸n a la base de datos, con el metodo oServer:End() (o su similar en la clase nativa)

Espero que te sea de ayuda

Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Consuta sobre MariaDB/MySql
Posted: Wed Jan 24, 2024 12:03 PM
FW provides 2 cloud servers for use and testing by our users and our own development team.

1) Bluehost:
Code (fw): Select all Collapse
oCn := maria_Connect( "208.91.198.197:3306,fwhdemo,gnraofwh,Bharat@1950" )
2) Vulter.com
Code (fw): Select all Collapse
oCn := maria_Connect( "209.250.245.152,fwh,fwhuser,FiveTech@2022" )
Connect to any of these two servers and test
Code (fw): Select all Collapse
? oCn:wait_timeout 聽// --> 28,800 seconds = 8 hours
That means the connection will be closed only after 8 hours of no activity. If there is even a single server access in the period of 8 hours, the connection will continue for another 8 hours from that time.

Even after a non activity for 8 hours, FW built-in library automatically reconnects if the user attempts to communicate with the server.

1) Contract with a good service provider.
2) Use FW built-in library which provides automatic reconnection feature transparently.

My advice is to connect at the beginning of the application and close the connection only when closing the application.
Regards



G. N. Rao.

Hyderabad, India
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Consuta sobre MariaDB/MySql
Posted: Wed Jan 24, 2024 03:16 PM
cmsoft wrote:Coincido con Mr. Rao que no es necesario conectar y desconectar en cada consulta.
Tambi茅n, en el caso de la clase Dolphin es necesario mantener viva la conexi贸n, sino despues de un tiempo de inactividad puede desconectarse.
No se en el caso de la clase nativa de Fivewin como se mantiene la sesi贸n abierta.
Si tenes acceso la base de datos, una forma de verificar las conexionaes activas es usando el comando
SHOW PROCESSLIST
Puede ser tambien que en alg煤n corte quede una sesi贸n abierta, la cual puedes matar con el comando
KILL nId (nId es el id que te muestra en show processlist)
Cuando cierras la sesi贸n debes cerrar la conexi贸n a la base de datos, con el metodo oServer:End() (o su similar en la clase nativa)
Espero que te sea de ayuda
Cesar, puedes poner como haces en Dolphin para mantener la conexi贸n "activa" ?
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Re: Consuta sobre MariaDB/MySql
Posted: Wed Jan 24, 2024 04:40 PM
Estimados amigos,

Much铆simas gracias a todos por la excelente ayuda, siempre se aprende de Uds. en cada consulta.

Pido disculpas, porque a la final, el error era m铆o. Una conexi贸n que estaba dejando sin cerrar en un "punto caliente" del sistema.

Sin embargo, consultando ac谩 en el foro y en algunos de MySql en internet, buscando la soluci贸n al problema de TOO MANY CONNECTIONS (1040) , aprend铆 algo m谩s sobre la autonom铆a de los motores de bases de datos y sus reglas y de como tomar previsiones para que no suceda ese error.

No hizo falta cambiar nada en el c贸digo, as铆 que por los momentos seguir茅 con el sistema de conectar y desconectar en cada operaci贸n, ya que es la mejor manera que hasta ahora he encontrado para trabajar en la nube y mis sistemas siempre los hago duales, cosa de que se puedan migrar de base de datos en la nube a local o viceversa, con solo cambiar un par谩metro en el archivo de configuraci贸n que uso.

Entiendo perfectamente que Mr. Rao, C茅sar y muchos colegas que opinan en los foros de mysql, no comparten este criterio (aunque hay otros que s铆), y tambi茅n estoy de acuerdo en usar una sola conexi贸n ya que ahorra mucho c贸digo y minimiza la posibilidad de error, como el que me llev贸 a abrir este hilo, pero no he encontrado manera de que los servidores en la nube no me desconecten. Ninguno de los que he tenido me permiten mantener una conexi贸n permanente, ni siquiera haciendo ping con un timer. Igual llega un momento en que me desconecta.

Hasta ahora, me sigue funcionando bien el m茅todo "conectar-hacer-desconectar" , veremos si en alg煤n momento ya no sea conveniente.

A todos gracias nuevamente. a la final, el error estaba entre la silla y el teclado... :? como casi siempre.
"Los errores en programaci贸n, siempre est谩n entre la silla y el teclado..."



Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin



Carora, Estado Lara, Venezuela.
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Consuta sobre MariaDB/MySql
Posted: Thu Jan 25, 2024 11:49 AM
cnavarro wrote:Cesar, puedes poner como haces en Dolphin para mantener la conexi贸n "activa" ?
Cristobal, simplemente hago un timer con una consulta simple, creo que esto lo hab铆a obtenido de alg煤n hilo de este foro, y me ha funcionado, aunque no se si es la mejor forma o la mas adecuada
oQry := oApp:oServer:Query("SELECT 1")
Tambi茅n esto me indica si en el transcurso del programa se ha cortado la conexi贸n a internet.
Espero tus comentarios sobre el tema.
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
Re: Consuta sobre MariaDB/MySql
Posted: Thu Jan 25, 2024 03:57 PM
en la windows principal
Code (fw): Select all Collapse
ACTIVATE WINDOW oWnd ON INIT _ChkConexion( oWnd, oCon )

Function _ChkConexion( oDlg, oCon )
聽 聽DEFINE TIMER hMain["oTimer"] OF oDlg INTERVAL 30000 ACTION (hMain["oTimer"]:DeActivate(), _RevisaConexion(oCon), hMain["oTimer"]:Activate() )
聽 hMain["oTimer"]:Activate()
Return nil

FUNCTION _RevisaConexion( oCon )
聽 聽LOCAL oWait
聽 聽LOCAL oQry

聽 聽TRY
聽 聽 聽 oQry := oCon:Query( "SELECT * from admin" )
聽 聽CATCH
聽 聽 聽 MsgRun("Intentando Conectar con el servidor...",, {|| oCon:Ping() })
聽 聽END

RETURN NIL
Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "

Continue the discussion