Consuta sobre MariaDB/MySql

Consuta sobre MariaDB/MySql

Postby JoseAlvarez » Tue Jan 23, 2024 1: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

Image

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.
User avatar
JoseAlvarez
 
Posts: 795
Joined: Sun Nov 09, 2014 5:01 pm

Re: Consuta sobre MariaDB/MySql

Postby nageswaragunupudi » Tue Jan 23, 2024 3: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
User avatar
nageswaragunupudi
 
Posts: 10641
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Consuta sobre MariaDB/MySql

Postby JoseAlvarez » Tue Jan 23, 2024 4: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.
User avatar
JoseAlvarez
 
Posts: 795
Joined: Sun Nov 09, 2014 5:01 pm

Re: Consuta sobre MariaDB/MySql

Postby cmsoft » Tue Jan 23, 2024 4: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
User avatar
cmsoft
 
Posts: 1290
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Consuta sobre MariaDB/MySql

Postby nageswaragunupudi » 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: Select all  Expand view
oCn := maria_Connect( "208.91.198.197:3306,fwhdemo,gnraofwh,Bharat@1950" )


2) Vulter.com
Code: Select all  Expand view
oCn := maria_Connect( "209.250.245.152,fwh,fwhuser,FiveTech@2022" )


Connect to any of these two servers and test
Code: Select all  Expand view
? 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
User avatar
nageswaragunupudi
 
Posts: 10641
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Consuta sobre MariaDB/MySql

Postby cnavarro » Wed Jan 24, 2024 3: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
User avatar
cnavarro
 
Posts: 6548
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Consuta sobre MariaDB/MySql

Postby JoseAlvarez » Wed Jan 24, 2024 4: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.
User avatar
JoseAlvarez
 
Posts: 795
Joined: Sun Nov 09, 2014 5:01 pm

Re: Consuta sobre MariaDB/MySql

Postby cmsoft » 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.
User avatar
cmsoft
 
Posts: 1290
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Consuta sobre MariaDB/MySql

Postby sysctrl2 » Thu Jan 25, 2024 3:57 pm

en la windows principal
Code: Select all  Expand view

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 "
User avatar
sysctrl2
 
Posts: 1020
Joined: Mon Feb 05, 2007 7:15 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 96 guests