FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Aplicacion lenta en otra maquina
Buenas a todo el personal , es mi primera pregunta?. Llevo un año y medio programando con delhi 7 y gracias a el club delphi y a google y a otros foros he ido solventando mis dudas y problemas.
Con este problema que tengo ahora !No se por donde pillarlo¡ ,os cuento. Tengo una maquina Dell corel duo , 2 nucleos , a 2.600 MH y 4 G de ram. En esta maquina tengo el delhi7 y es donde cacharreo. Llevo este año y medio desarrollando una plataforma de integración de video con alarmas ( de diferentes fabricantes) -SISTEMAS DE SEGURIDAD CCTV... Uso 3 bases de datos con Firebird 2.1.3. uso datasnap y diferentes servidores de apliacaciones.Aplicacion cliente-servidor. En esta maquina tengo el servidor y el resto de las aplicaciones, la maquina hace de servidor y de cliente.Cuando yo levanto la aplicacionón de planos , tarda unos 2,3 segundos en mostrarse la forma con sus correspondientes iconos de camaras y sensores , lo cual es asumible por que intento arranca una estructura de planos de hasta 10 planos con sus correspondientes iconos , todos generados en tiempo de ejecución, los recupero de una base de datos donde tengo almacenado entre otras cosas su posicion en el plano y el tipo de icono que es. montado sobre firebird superserver utilizando el primer núcleo nada mas. Mi problema es el siguiente. Monto el mismo firebird , con la misma configuración, e instalo los programas de las aplicaciones en una maquina con un I7 con 8 nucleos a 3200 mh y 4G de ram es decir, muchisimo mas potente. Y la aplicación de los planos tarda de 14 a 15 segundos en arrancar. El tamaño de las tablas que tiene que buscar en las tres bases de datos distintas , son ridículas, ahora mismo la tabla más grande puede tener 300 registros. Es decir La misma aplicación sobre una maquina más potente es mucho más lenta. Conclusión , soy un inútil. Algo me estoy comiendo al hacer la instalación del programa en la otra maquina, en el directorio de mi aplicación distribuyo el midas.dll, las runtime VC(msvcr80.dll-msvcp80.dll y el manifest) y el fbclient.dll a parte de trodos los ejecutables de la aplicación. Alguna idea del porque de mi problema ?( sin contar lo de inútil). Esto va para el Moderador colocarlo donde corresponda , por que no creo que el problema sea con firebird. Y otra custión para el moderador - voy a necesitar a una o dos personas que me echen una mano en la ampliación de esta aplicación ,por que tiene que seguir creciendo con diferentes marcas de grabadores y fabricantes y yo cada vez tengo menos tiempo para programar. ¿ se puede ofrecer trabajo esporadico ? ¿como? ¿trabajo sin horario- en vuestra casa? saludos a todos y gracias por las aportaciones que haceis . |
#2
|
||||
|
||||
Instala la versión classicserver, no la superserver. Y si es en linux... mejor que mejor.
También puedes "anclar" firebird superserver a un solo procesador, haz una búsqueda por "ibaffinity". Tenemos una sección de ofertas de trabajo, arriba en el menú a la derecha. ¡¡¡ Y bienvenido !!! p.d. No eres un inútil, es que superserver es para equipos de un procesador. |
#3
|
|||
|
|||
Gracias por la contestación.
Ya hice la prueba con el clasic (antes de explicar mi problema)y el efecto fue el mismo. Ahora he fijado en el parametros de CpuAffinityMask = 224 que el equivalente de usar las cpu 6,7 y 8. y tiene actividad en esas cpu. Pero no veo la diferencia de mi maquina de desarrollo , corel duo dos procesadores , con el pepino I7 de 8 procesadores (unos 14 seg más lento en ir recorriendo las tablas , que son muy pequeñas). Creo que el problema está en algo del entorno de windows alguna variable o dll que tarde mucho en encontrala. Estoy por instalarme el delphi en el I7 y compilar y probar directamente sobre la maquina. ¿haber que pasa |
#4
|
||||
|
||||
Creo que windows no hace uso de esos procesadores. Instala un Linux, verás la diferencia.
|
#5
|
||||
|
||||
Además que la versión superserver es para un procesador.
Con la versión classic sí puedes hacer uso de varios procesadores, pero el problema es que windows no es muy bueno gestionando eso. Clientes nuestros (en mi trabajo) tienen servidores de 8 y 16 cpus con firebird y todos los servidores que montamos van con linux. |
#6
|
||||
|
||||
Hola.
¿ Cuales son los sistemas operativos ?, y ¿ cual es el tamaño de la base de datos ?. NOTA: Si pones la Unit Midas en el Uses del formulario principal, te ahorrás el tener que distribuir la Midas.dll en la carpeta de tu aplicación (esta librería es muy incómoda tener que distribuirla porqué hay que registrarla en el sistema con el regsvr32.exe). Prueba a poner temporalmente la base de datos en otro equipo. Así sabrás si el problema está en la base de datos o en algún otro conflicto que se dé en ese equipo.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#7
|
|||
|
|||
Instalarlo en Linux es un problema. Ya me gustaria a mi poder hacerlo.
En cuanto al midas lo tengo en todos los programas puestos ,pero ademas la distribuyo y registro , ya que tengo que registrar y distribuir unos cuantos ocx, dll y codecs de video, registrar uno más que más da? Yo el servidor si lo podría instalar en Linux. Mi problema es que el 98% de las ocasiones la misma maquina será el servidor y el cliente, y las SDK que recibo de los fabricantes no están hechas para linux , algunos me dan componentes que usan muchísimas librerias de windows, este es el problema de no hacerlo para linux. y montar una maquina solo para el servidor de datos en linux(costo adicional para el cliente), cuando las bases de datos son muy pequeñas, hablamos de 10-20 megas, y de estos 20 megas 19'5 son de logs generados por las alarmas y sucesos de los programas que se van generando. El ususario siempre tiene visible los log del dia actual , si quiere ver otro día lo selecciona en un datetimepiker y el acceso es instantaneo. Con lo que no me queda más remedio que seguir con Windows, y lo peor es que ahora ya no venden el XP , este último que estoy probando ahora para instalarlo la semana que viene en Sevilla , he tenido que comprar un windows7. Conclusión : lo monto como superserver en multiprocesador y que use solo un procesador (aunque Casimiro diga que el superserver solo usa un procesador yo le puse en el CPUAffinityMask= 224 y los procesadores 6 7 y 8 tienen activadad por el Firebird 2.1.3) , pero como tampoco necesito tanta cpu para mover los pocos datos que necesito lo dejaré sólo en uno, pa, por si acaso. También os puedo asegurar que no tengo mucha idea de lo que estoy haciendo, me puse con este mega proyecto el año pasado porque monte una empresa con otro socio y sabía que en plena crisis mundial nos costaría mucho salir adelante y como tenía tiempo (no teniamos trabajo ) me dió por hacer este super programa (ya llevaré facilmente más de 150.000 líneas de código) en delphi7, porque hace muchos años estuve cacharreando con el primer delphi, al final con saber un poco de ingles , haces código en pascal. Cuando yo ejecute por primera vez el delphi7 y VI UNA PALETA DE COMPONENTES QUE SE SALIA DE LA VENTANA CON UNOS NOMBRES RARISIMOS, ME ASUSTE. Y OJO, la primera version del programa la hice con paradox, hasta que un día encontre este club y me enteré que paradox ya se dejo de desarrollar hace tiempo y que tenía problemas de vez en cuando........y es cierto se me colgaba, y se rompian los indices. Se hablaba en este foro mucho de Firebird, a sin que tomé la decisión de cambiar a Firebird, me tiré dos semanas intentando entenderlo y que podía hacer, y dí el salto. Por cierto, ya que os estoy soltando este rollo de mi historia , tengo otra duda , que lo mismo lo estoy haciendo fatal el código o el planteamiento del programa(ahora son 150000 lineas pero llegerá al millón seguro) y la consulta es esta.. Yo uso Firebird, los componentes Interbase(un IBtable conexión con la base de datos y luego por cada tabla que uso lo hago con un IBdataset , un IBtransacction y un datasetprovider ,uno por cada tabla (en los servidores de aplicaciones, que conectan con firebird), no he tenido problemas y me funciona, realmente lo único que hacen es grabar, borrar y servirme los datos cuando se los pido. Por otro lado en las aplicaciones uso los sockectconnection y el connectionbroker para establecer las comunicaciones con los diferentes servidores de aplicación y establecer una autopista de comunicacion. Y siempre uso los clientDataset por ejemplo : o buscando con locate así: y la conexión con los servidores de aplicación las hago así ¿LO ESTOY HACIENDO MAL O PUEDO SEGUIR ASÍ? porque os puedo asegurar que estoy programando a base de ostias, y gracias a las aportaciones que haceis en el foro he ido solventando muchos probemas. Saludos y gracias a todos Última edición por Casimiro Notevi fecha: 17-05-2010 a las 22:21:08. |
#8
|
||||
|
||||
Te aconsejo que pongas el código entre etiquetas para que pueda leerse mejor [code ]tu código[/code ], echa un vistazo a esto.
¿Y exite algún motivo para no instalar la versión classic? |
#9
|
|||
|
|||
No em principio ninguno, solo que he leido mucho que bajo windos mejor el superserver, yo probé ayer el clasic y el funcionamiento es el mismo . Ten en cuanta que las difernecias se vrrían con bases de datos pesadas y muchas conexiones clientes, y en mi caso la base de datos no pesa y solo suele haber un cliente. Supongo que me daría igual uno que otro.
Lo que tengo claro es que el día que tenga que montar esta apliacación para unos cuantos clientes sobre el mismo servidor ,montaré el servidor independiente a las apliacaciones y en linux. la proxima vez que ponga código, intentaré hacerlo mejor, saludos |
#10
|
||||
|
||||
Sí, en esas condiciones es cierto que lo mismo da montar uno que otro.
Te he puesto las etiquetas [delphi ] tu código [/delphi ], ahora se lee mejor |
#11
|
||||
|
||||
Cita:
Saludos |
#12
|
||||
|
||||
Cita:
1) Version de firebird (usa la última estable). 2) Prueba componentes específicos, caso FIB+ de devrace (excelentes) o IBO. Si quieres ir por open source prueba ZEOS, muy recomendables tambien. Espero que te sirva. |
#13
|
||||
|
||||
Hola.
Cita:
Además ponerla en la carpeta de la aplicación puede ser un problema, puesto que si su primera ejecución es en esa carpeta, queda registrada allí, y si después la mueves a otro sitio o la ejecutas desde otra carpeta, vas a tener problemas. Esta librería en concreto parece mejor tenerla en una carpeta del sistema. Es una librería problemática (por la necesidad de registro, y el hecho de que queda registro en una ubicación específica, a diferencia de todas las otras librerías necesarias para trabajar con Firebird), y por eso es mejor enlazarla estáticamente en tu aplicación (incluyéndola en el Uses de algún módulo del programa). Para jmcf no es mucho problema porqué ya tiene que registrar otras librerías (ocx y demás), pero el resto de programadores, que normalmente hacemos aplicaciones que no necesitan librerías que deban ser registradas, deberíamos evitarla. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#14
|
||||
|
||||
Jmcf,
Te hice la sugerencia de que utilizaras otro Servidor, temporalmente, solo para probar si el problema está realmente en el Servidor de Firebird. Es decir, en tu estación de desarrollo, la aplicación arranca en 2-3 segundos. En cambio en el equipo de producción arranca en 14-15 segundos. Bien, yo probaría a modificar la cadena de conexión para arrancar la aplicación en el equipo de producción, pero utilizando la base de datos de la estación de desarrollo. Si la aplicación arranca en 2-3 segundos, entonces claramente tienes un problema de algún conflicto en el Firebird instalado en el equipo de producción. Si la aplicación arranca en 14-15 segundos, entonces el problema no está en el Servidor de Firebird sino en algún otro proceso del arranque de la aplicación. Cuando hayas hecho está prueba tendrás mejor aislado el problema, y será más fácil intentar encontrar una solución. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#15
|
||||
|
||||
Cita:
Cita:
Cita:
|
#16
|
||||
|
||||
Puede funcionar, pero te va a dar problemas. Si no recuerdo mal, si no la registras manualmente, se registra automáticamente en la carpeta donde se encuentre durante su primera llamada (si está en el path).
Pero como después cambies la carpeta de la aplicación, o elimines esa aplicación y utilices otra aplicación que también necesite la Midas.dll, entonces la irá a buscar en la carpeta donde quedó registrada inicialmente, y como ya no la encontrará allí, el programa fallará incluso aunque la tengas en la misma carpeta de la nueva aplicación. Además del conflicto de dll's que puedes tener, ya que no solo tus aplicaciones la van a usar, sino que tu cliente también se puede instalar otras aplicaciones que usan la Midas. Y como se va a enlazar con la librería que se encuentre en la carpeta de registro, es fácil de que otra aplicación instale una versión anticuada que haga fallar a la tuya. En fin, haces bien en enlazarla estáticamente. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#17
|
|||
|
|||
He tenido algun problema similar con mi equipo sobre el cual desarrollo un aplicativo. Adquiri un Portatill con Windows 7 Ultimate Edition, cuando hago la primera prueba del software entra de manera normal, pero con la segunda prueba en adelante se pone lento el inicio del aplicativo.
Todavia desarrollo con Delphi 6 + Firebird 1.5.6 + IBX, a diferencia de Windows XP, con Windows 7 las cadenas de conexion las tuve que cambiar, antes podia definir la ruta de la base de datos como: C:\DBSIPRED.FDB Con Windwos 7 eso no funciona y me toca trabajar con alguna de estas alternativas: :C:\DBSIPRED.FDB localhost:C:\DBSIPRED.FDB 172.0.0.1:C:\DBSIPRED.FDB Realmente quisiera de ser posible que alguien nos explicara en rendimiento si estas opciones tienen diferencias. Revisen que no se debe instalar la extensión para el panel de control de Firebird en Windows 7 y Windwos Vista porque el panel de control deja de funcionar apropiadamente, deben desinstalar Firebird y al reinstalarlo deshabilitar esa opcion. Otra cosa es habilitarle al Firewall de Windows el puerto 3050, o puede ser que ese puerto el sistema lo este utilizando para otra cosa y entre en conflicto con el uso que de él hace Firebird.
__________________
Luis Fernando Buelvas T. |
#18
|
||||
|
||||
Cita:
Prueba a cambiar este parámetro de configuración para que vuelva a funcionar el protocolo local. http://www.firebirdnews.org/?p=873 En el archivo firebird.conf quitas la señal de comentario para la entrada IPCName y cambias su valor por Global\FIREBIRD Es normal que utilizando el protocolo de red, el programa vaya más lento que utilizando el protocolo local. Pero no parece que pueda ser para tanto como dices que afecta a tu sistema. Así que ya nos dirás después de volver a poner en marcha el protocolo local. Saludos
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#19
|
|||
|
|||
Hice la prueba que comentas (Guillotmarc) de montar el pepino como cliente del dell , para ver si el problema era del Firebird instalado en windows7 u otro problema. Y sorprendentemente el tiempo para arrancar los planos era el mismo. Conclusion, no era un problema de firebird.
Me puse a revisar el codigo de los planos, termine encontrando un par de errores, ya no me acuerdo cuales eran, puede que uno fuera un error en un commandtext de una SQL. Eso hacia que fuera mucho mas lento, por que? , no lo se, porque el error era el mismo en xp que windows7, y en el xp eran un par se segundos y en el otro 14. Despues de hacer esas modificaciones el tiempo en los dos sitemas era el mismo. El lunes y el martes fui a hacer la integración cerca de tu tierra en Dos Hermans (Sevilla). Los planos tardan 3 o 4 segundos lo cual es asumible porque tiene 7 planos con unos 300 iconos totos creados en tiempo de ejecución, con sus eventos y comprobando unas cuantas tablas para determinar el color que le corresponde a cada uno. En cuanto a Midas.dll yo la incluyo siempre en los uses, la instalo en los directorios de las aplicaciones y la registro. Gracias a todos |
#20
|
||||
|
||||
Hola. Felicidades por solucionar el problema.
Cita:
Está claro que para ti no hay ningún problema si lo haces, tus aplicaciones van a seguir funcionando siempre perfectamente. Pero puedes provocar algún conflicto de versiones en alguna otra aplicación externa, de terceros, que cargue la Midas.dll dinámicamente.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
¿Error al usar mi aplicación en otra maquina este es :EDBEngineError ? | Master23 | Conexión con bases de datos | 9 | 06-07-2010 03:52:08 |
mi proyecto en otra maquina | Cañones | Varios | 4 | 06-08-2007 13:28:51 |
como ejecutar una aplicacion desde otra maquina | valera | API de Windows | 5 | 18-05-2007 21:47:34 |
Cómo conectar un qry a una BD en otra maquina en una aplicación en Paradox con BDE? | Anabel | Conexión con bases de datos | 1 | 20-07-2005 19:13:13 |
instalar aplicacion en otra maquina con delphi y firebird 1.5 | ale21alito | Firebird e Interbase | 5 | 05-04-2005 16:03:23 |
|