Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Events, Classic Servder, multiprocesador y Firewall (https://www.clubdelphi.com/foros/showthread.php?t=72556)

RONPABLO 25-02-2011 19:14:18

Events, Classic Servder, multiprocesador y Firewall
 
Hola, tengo una duda sobre que debo hacer... tengo una aplicación que usa regularmente los eventos de firebird (1.5), esta aplicación esta instalada sobre computadores con equipos windoes de diversas arquitecturas (multiprocesador o un solo núcleo), al instalar sobre equipos con multiprocesador he notado que si necesito usar el classic server ya que en unos procesos de paso de datos en el super server simplemente se bloquea (aunque tengo presente que se puede configurar el firebird para que trabaje con un solo procesador y así evitar dichos bloqueos)... Bueno aquí es donde tengo el gran problema, resulta que el firebird al crear eventos los envia por un puerto aleatorio el cual suele ser diferente al 3050, este puerto se puede fijar en Firebird SuperServer a un número determinado (Y así decirle al firewall de windows que le deje pasar), pero en Classic Server no... Yo he pensado hacer 3 cosas, pero ninguna me deja satisfecho las cuales son:


1. Abrir todos los puertos del firewall y continuar con el uso de firebird CLassic, la cual de entrada en algunos clientes es una solución aceptable, pero en la mayoría de mis clientes se que que no.

2. Cambiar a superserver y configurar para que use un solo núcleo cuando tenga multiprocesador el cual se que en esos procesos pesados que hago se demorará más pero los hará .(solo si esta configurtado a un solo procesador).. lo que no me gusta es desaprovechar los recursos del procesador y además creo que en algunos clientes los necesitaré (esto aun no lo he probado).

3. Olvidarme de los eventos y usar sockets, lo malo de esto será la programación nuevamente de mucho código y que nunca los he trabajado antes, así pues lidiar con nuevos posibles errores y por consiguiente con nuevos puntos de soporte.


Por otro lado esta la opción de tener un timer actualizando constante mente los resultados, pero este para la mayoría de lo que necesito no me sirve ya que tengo que dar respuesta inmediata y no veo útil estar haciendo querys cada segundo (por decir algo)...


Alguien tiene una sugerencia para hacerme? o alguien ha podido solucionar el problema de los puertos aleatorios que abre los eventos de firebird para Classic Server?

Casimiro Notevi 25-02-2011 19:25:36

Pues no he notado yo ese problema, sólo abro el 3050 sea con SS o CS, ¿exactamente qué problema es, qué error te sale?

guillotmarc 25-02-2011 19:53:20

Hola.

A tus 3 soluciones yo añadiría posibilidades más :

4. Configurar el Firewall para que permite conexiones por todos los puertos a tu aplicación que recibe Eventos (ojo, esto no es lo mismo que tu solución 1).

5. Portar el sistema a una versión "moderna" de Firebird, de forma que puedas configurar el puerto de conexión a eventos para usar en Classic Server.

Gallosuarez 25-02-2011 20:32:44

El Poder de los Eventos ...
 
RONPABLO:

Si lees el siguiente documento te puedo asegurar que todas tus dudas sobre manejo de eventos se van a disipar:

http://www.ibphoenix.com/files/conf2...TO-A201-R4.zip

Saludos,
Gerardo Suárez Trejo

Casimiro Notevi 26-02-2011 00:03:19

Qué documento tan interesante, es buenísimo.
Todos los días se aprende algo.

RONPABLO 26-02-2011 19:36:13

Gracias por las respuestas.

Cita:

Empezado por Casimiro Notevi
Pues no he notado yo ese problema, sólo abro el 3050 sea con SS o CS, ¿exactamente qué problema es, qué error te sale?

Como tal yo uso los eventos para que una aplicación refresque un grid inmediatamente en varios equipos, para enviar un mensaje estilo popup a un equipo determinado de la red y en otras cosas similares, ocurre que en algunos equipos dichas acciones dejan de funcionar de un momento a otro, y simplemente el grind no refresca o el equipo que espera el mensaje nunca lo recibe y cuando voy y hago debug encuentro que el evento OnEventAlert no se dispara en el equipo que esta en la red, pero en el equipo que es servidor si detecta dicho evento...

Cita:

Empezado por guillotmarc
Hola.

A tus 3 soluciones yo añadiría posibilidades más :

4. Configurar el Firewall para que permite conexiones por todos los puertos a tu aplicación que recibe Eventos (ojo, esto no es lo mismo que tu solución 1).

5. Portar el sistema a una versión "moderna" de Firebird, de forma que puedas configurar el puerto de conexión a eventos para usar en Classic Server.

Respecto al punto 4 que comentas, me queda algo en el aíre... ¿que ponga cual programa? ¿el que yo hice o el Fb_Inetd_server?, de ser el primer punto, ¿solo sería mi ejecutable puesto en las reglas de salida o de entrada del firewall de windows?

Sobre el punto 5, ¿las nuevas versiones de firebird classic server funcionan bien con los eventos tras un firewall?

Cita:

Empezado por Gallosuarez
RONPABLO:

Si lees el siguiente documento te puedo asegurar que todas tus dudas sobre manejo de eventos se van a disipar:....

Como tal, el leer Event Paper me motivo a hacer esta pregunta ya que practicamente en mi mal ingles entiendo que cuando el firebird va a pasar por un firewall no es recomendable usar el classic server si se necesita el manejo de eventos a no ser que se use un programa que gestione en el servidor y luego envíe directamente dichos eventos a los clientes.

Cita:

Empezado por Event Paper
Firewall problem conclusion:

To conclude the firewall issue in one simple rule: If your server is behind a firewall, you must use SuperServer and RemoteAuxPort setting. Now, what if you really need to use ClassicServer and events and there is a firewall in between. Well, you'll have to use some other mechanism to send events to clients. For example and simple “dispatching” application can be built and run on the same computer where Firebird ClassicServer is running


guillotmarc 26-02-2011 22:16:54

Cita:

Empezado por RONPABLO (Mensaje 392096)
Respecto al punto 4 que comentas, me queda algo en el aíre... ¿que ponga cual programa? ¿el que yo hice o el Fb_Inetd_server?, de ser el primer punto, ¿solo sería mi ejecutable puesto en las reglas de salida o de entrada del firewall de windows?

Me refiero a lo primero, a poner el ejecutable del programa que tú has hecho en las reglas de entrada/salida del firewall.

Eso tiene que bastar para que pueda recibir eventos, sea cual sea el puerto por el que le lleguen.

Cita:

Empezado por RONPABLO (Mensaje 392096)
Sobre el punto 5, ¿las nuevas versiones de firebird classic server funcionan bien con los eventos tras un firewall?

Sí, pueden configurar un único puerto para los eventos.

Al menos en el último Firebird 2.5. Tanto para la arquitectura Classic, como para la nueva SuperClassic, que aúna lo mejor de la Classic y la SuperServer.

http://www.firebirdsql.org/rlsnotesh...onf-rmtauxport

Saludos.

RONPABLO 27-02-2011 22:46:28

bueno pues voy a probar primero la opción del ejecutable en el firewall y pondré como meta el pasar a una versión más actualizada de firebird que desde hace bastante tiempo lo estoy aplazando. muchas gracias

RONPABLO 18-03-2011 23:13:04

Bueno, dos semanas después de probar y probar, no me funciono lo de agregar al firewall el ejecutable, así que decidí pasarme (por tercera vez) a Firebird 2.5, he ido teniendo alguno que otro problema de como hacia (mal) las consultas (por ejemplo en Firebird 1.5 podía dividir un varchar directamente sin hacerle un cast, cosa que en el firebird 2.5 no me permite ahora) pero ya poco a poco los he ido cambiando (y en intentos anteriores ya había mejorado también algunos otros errores que tenía)... Con Firebird 2.5 me funciona correctamente los eventos y hoy estoy feliz trabajando con el superclassic.


La franja horaria es GMT +2. Ahora son las 09:50:31.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi