Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-02-2008
Kenobi Kenobi is offline
Miembro
 
Registrado: mar 2007
Posts: 191
Poder: 18
Kenobi Va por buen camino
Aplicacion Leeeeenta ...

desde hace ya algun tiempo tengo una aplicacion en Delphi que conecta a una B.D MsSql2000 pues bien todo funcionaba bien hasta hace poco en los que los tiempos de carga son infinitamente largos (tiene un ventana Splash) ahora bien que pasara... esa es mi pregunta
  • que puedo hacer para mejorar el rendimiento general de mi aplicacion
  • que puedo revisar ....(el codigo no porque funcionaba bien antes)...
  • de que depende delphi en cuanto a servicios de windons (ODBC etc)
  • como monitoreo la red que pruebas puedo hacer
  • Y si la trasformo a 3 capas mejoraria ..?(actualmente es a Dos capas)

Gracias ....

Asi mismo pregunto si existe alguna herramienta que permita monitorear la respuesta de un servidor de datos a fin de establecer que esta fallando .....
Responder Con Cita
  #2  
Antiguo 12-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
No sabemos qué puedes hacer si no sabemos lo que haces. Dices que es lenta al cargar, ¿qué cosas realiza la apliación al cargarse? ¿Qué objetos/componentes utilizas? ¿Podrías ponernos algo de código? ...


Salu2.
Responder Con Cita
  #3  
Antiguo 12-02-2008
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Piensa en estos puntos para determinar tu problema:
Haces una conección directa al servidor MS Server (no por medio de DBE o ODBC).
  1. Pasa en un sólo cliente o en todos?
  2. Haz monitoreado el uso de la red (puede estar saturada)
  3. Que cantidad de procesamiento de datos haces al momento de iniciar tu aplicación cliente ¿Será demaciado para que se vuelva lenta?
  4. se me acabaron las ideas por el momento.
Si no haces una conexión directa, pueda ser que el problema sea el DBE o bien el mismo sistema operativo.

Si ocurre en todos los clientes (inclusive con S.O. recién instalados) puede ser que el problema esté del lado del servidor.

A forma de relato, todavía estoy desarrollando una aplicación para trabajar directamente con servidor firebird, pero he notado que cuando la memoría RAM libre del servidor baja a menos de 200, mis aplicaciones clientes se vuelven leeentas, inclusive sólo con un cliente conectado. Revisa bien, para determinar en donde se encuentra el problema, luego de encontrarlo sería momento de buscar una solución.

Saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #4  
Antiguo 13-02-2008
Kenobi Kenobi is offline
Miembro
 
Registrado: mar 2007
Posts: 191
Poder: 18
Kenobi Va por buen camino
Respuesta

Hola amigos gracias por sus respuestas, les respondo a continuacion ....


Hago conexion por medio de Ole por medio de los componentes de corelab ojo es lo mismo que con ado,

yo creo que el problema no esta en la aplicacion porque como dije, ella funcionaba bien pero la describo de manera somera a continuacion...

es una aplicacion normalita Cliente servidor a dos capas con + o - 15 tables y otro tanto en consultas actualizables(son necesarias) en el arranque pues accede a estas y luego carga en memoria algo asi como 10 forms, en su mayoria se encarga de hacer consultas a la BD y generar reportes en crystal, como dije una aplicacion normalita

yo creo que el problema esta en el servidor y o en la red, el problema es que temo que este caido un servicio o algo ,

por eso pregunto de que depende a nivel de servicios una aplicacion asi, Odbc lo uso solo para algunos reportes en crystal que se ejecutan en la aplicacion que mas debo revisar ....

Gracias por sus respuestas
Responder Con Cita
  #5  
Antiguo 13-02-2008
eric565 eric565 is offline
Registrado
 
Registrado: feb 2008
Posts: 1
Poder: 0
eric565 Va por buen camino
Casi lo mismo

con D7 y MSSQL Server 7
tuve el mismo problema. probé todo lo que se me venga a la cabeza y luego....
nada, nada se ha solucionado, aunque un buen dia se me ocurrió terminar un proceso (o sea, uno de los procesos...) llamado svchost y el problema se fue, así como mis temas de xp y demás artilugios gráficos que sólo sirven para quemar con mayor velocidad las pestañas, ah! otra cosa, este pc (que lo utilizo como server de internet en mi lan) quedaba con conexión pero las demás se perdían, los detalles gráficos volvían al cabo de tres minutos, pero la conexión, no.
No te digo que sea una solución, mucho menos algo saludable, pero me saca de apuros cuando el cliente está al lado mío, haciendo comentarios sobre la velocidad con la que trabaja el programa.
Si quieres más detalles, te los contaré....
Responder Con Cita
  #6  
Antiguo 14-02-2008
Kenobi Kenobi is offline
Miembro
 
Registrado: mar 2007
Posts: 191
Poder: 18
Kenobi Va por buen camino
Otra caracteristica de la Falla

Hola amigos

pues otra cosa la lentitud de la aplicacion es solo en la carga despues la cosa mejora notablemente yo diria que esta a un 90 % de su velocidad normal ....
esto con que tendra que ver ...

Gracias por sus respuestas ....
Responder Con Cita
  #7  
Antiguo 14-02-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Kenobi Ver Mensaje
pues otra cosa la lentitud de la aplicacion es solo en la carga despues la cosa mejora notablemente yo diria que esta a un 90 % de su velocidad normal ....
Deberías explicar con detalle qué cosas estás haciendo en esa carga y tal vez colocar algo de código, de otra forma es difícil adivinar qué pasa...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 14-02-2008
Kenobi Kenobi is offline
Miembro
 
Registrado: mar 2007
Posts: 191
Poder: 18
Kenobi Va por buen camino
Pues como ya dije....

Hola neftali ....

durante la carga de la aplicacion se crean los distintos formularios asi como el modulo de datos (este va de primero) y dentro de el hay pues tablas y consultas (como 15 o menos de cada uno)

aca va el codigo del dpr

Código Delphi [-]
Var
I:integer;
begin

FrmIntroProgreso:=TFrmIntroProgreso.Create(Application);

FrmIntroProgreso.Show;
FrmIntroProgreso.Update;

    Application.Initialize;
    Application.Title:='Nombre Aplicacion';
    FrmIntroProgreso.AlphaBlendValue:=FrmIntroprogreso.AlphaBlendValue+100;

    Application.CreateForm(TDataSir, DataSir);

    Application.CreateForm(TFrmPrincipal, FrmPrincipal);
    Application.CreateForm(TFrmEst, FrmEst);
  FrmIntroProgreso.AlphaBlendValue:=FrmIntroprogreso.AlphaBlendValue+30;
    Application.CreateForm(TFrmBuscador, FrmBuscador);
    Application.CreateForm(TFrmConst, FrmConst);
  FrmIntroProgreso.AlphaBlendValue:=FrmIntroprogreso.AlphaBlendValue+30;
    Application.CreateForm(TFrmCancelR, FrmCancelR);
    Application.CreateForm(TFrmCancelRL, FrmCancelRL);
  FrmIntroProgreso.AlphaBlendValue:=FrmIntroprogreso.AlphaBlendValue+30;
    Application.CreateForm(TfrmSancion, frmSancion);
    Application.CreateForm(TFrmI, FrmI);
  FrmIntroProgreso.AlphaBlendValue:=FrmIntroprogreso.AlphaBlendValue+30;
    Application.CreateForm(TFrmEg, FrmEg);
    Application.CreateForm(TFrmTrasN, FrmTrasN);
  FrmIntroProgreso.AlphaBlendValue:=FrmIntroprogreso.AlphaBlendValue+30;
    Application.CreateForm(TFrmEgr, FrmEgr);
    Application.CreateForm(TfrmS,FrmS);
    Application.CreateForm(TFrmCr,FrmCr);
    Application.CreateForm(TFrmGr, FrmGr);
 
   
for i:=FrmIntroProgreso.Barra.Position to FrmIntroProgreso.Barra.max do
begin
  FrmIntroprogreso.Barra.Stepby(5);
  sleep(10);

end;  
 FrmIntroProgreso.Hide;
 FrmIntroProgreso.Free;
Application.Run;

end.

y durante la carga del primer form (modulo de datos)
Código Delphi [-]

procedure TDataSir.DataModuleCreate(Sender: TObject);
begin
//.......RUTINA PARA ABRIR BASE DE D. Y TABLAS ..........

try
if not SqlConexion.Connected then SqlConexion.Connected:=true;
except
  application.MessageBox('Imposible conectar con la Base de Datos'+#13+'Intente mas Tarde','Aviso del Sistema',MB_OK+MB_ICONEXCLAMATION);
  application.Terminate;
end;

if Sqlconexion.Connected then
begin
    Tabla1.Open;
    Tabla2.Open;

    tabla3.Open;

    consulta1.Open;
   tabla3.Open;
    tabla4.Open;

     consulta2.Open;
     tabla5.Open;
     consulta3.Open;

     consulta4.Open;
      consulta4.Last;

end;
end;

este codigo como ven se ejecuta durante el create del modulo de datos .

el que sigue es al final (aca no es el problema porque la aplicacion si que cierra )

Código Delphi [-]
procedure TDataSir.DataModuleDestroy(Sender: TObject);
var
i:integer;
//Nombre:string;
begin
if  SqlConexion.Connected then SqlConexion.Connected:=false;

for i:=0 to self.ComponentCount-1 do
begin
   if (self.Components[i] is TDataSet) then

    if Tdataset(Components[i]).Active then Tdataset(Components[i]).Active:=false;

end;
end;

pues este es el codigo principal yo creo que la cosa esta en el modulo de datos ya que se crea primero alli durante la carga de la conexion y tablas lo que no se es identificar que elemento externo a puede estar afectando ..
por eso pregunto de que servicio depende una aplicacion como esta y como detectar si es el servidor de Bd o la red la que esta interfiriendo ....

GRacias ....
Responder Con Cita
  #9  
Antiguo 14-02-2008
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
Podrías realizar el debug paso a paso y ver en donde está la tardanza.

En mi opinión creo que puede ser al crear el modulo de datos y la razón por la que antes no tuvieses problema y ahora sí puede ser de la cantidad de datos almacenado en la Base de Datos.

Veo que al crear el módulo de datos realizas el Open de varias tablas, no se si tienes un filtro o no, pero ten en cuenta que existen componentes que al realizar el Open traen todos los datos de la tabla del servidor, otros solo realizan el fetch de los registros necesarios y van realizando fecths sucesivos según se vaya necesitando. No se cuál es tu caso, esto es simplemente un comentario para que lo tengas en cuenta, ya que si los componentes que usas traen todos los datos en el open el problema de la lentitud puede ser el aumento de datos en la B.D.

Tampoco sé si realmente necesitas abrir todas las tablas, procura realizar la petición de datos exclusivamente cuando sea necesario.

Otra cosa, ¿necesitas crear todos los formularios al iniciar la aplicación?, yo te recomendaría crear los necesarios (15 me parecen excesivos) e ir creando el resto segun se solicite.

Realmente no te puedo decir cuál es tu problema, pero pueden ir los tiros por ahí. Prueba lo del debug, así sabrás en que punto se ralentiza.

Un saúdo.
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)
Responder Con Cita
  #10  
Antiguo 14-02-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Kenobi Ver Mensaje
durante la carga de la aplicacion se crean los distintos formularios asi como el modulo de datos (este va de primero) y dentro de el hay pues tablas y consultas (como 15 o menos de cada uno)
Ok, mucho mejor así.
Hay varias cosas que me llaman la atención; Yo te las comento y luego tú verás si está dentro de tus posibilidades modificarlas o no.

(1) Creas todos los formularios al iniciar la aplicación, cosa que no es necesaria. Crea los formularios cuando los vayas a visualizar y destruyelos al ocultarlos. Supongo que al iniciar no necesitas tenerlos todos visibles.

(2) Algo similar pasa con las tablas y consultas. Veo que abres todas al iniciar. Tampoco es necesario si no las vas a utilizar todas en ese momento. Abre cada una en el momento en que la necesites. Incluso en una de ellas haces el Last, con lo que obligas a recorerla toda.
No digo que no debas hacerlo, lo que no se es si es necesario que lo hagas todo en ese punto (al iniciar).

(3) El Sleep(10) es un retardo innecesario que estás introduciendo.

(4) Por último haces un recorrido utilizando ComponentCount; Este método es muy lento. Se puede cambiar y utlkizar un TObjectList para contener los TDataset y hacer el recorrido sobre la lista. (*NOTA*)

Son algunas cosas, lo que sí haría yo es intentar añadir a un Log marcas de tiempo de lo que tarda cada operación. Para saber dónde estás perdiendo tiempo. (*NOTA*) Por ejemplo en el punto (4) tal vez no se esté perdiendo nada de tiempo y al hacer el cambio no ganes nada (y pierdas tiempo de programación).
El fácil poner un Memo oculto y entre las líneas de tu código añadir sentencias como esta:

Código Delphi [-]
  Memo1.Lines.Add('Abriendo tabla 1  ==> ' + DateTimeToStr(Now));
  ...
  Memo1.Lines.Add('Creando form   ==> ' + DateTimeToStr(Now));
  ...  
  Memo1.Lines.Add('Creando form   ==> ' + DateTimeToStr(Now));
  ...

Cuando la carga esté completa, lo grabas a disco utilizando:

Código Delphi [-]
  Memo1.SaveToFIle('c:\temp\Carga.Log');

Con eso tendrás marcas de tiempo aproximadas de lo que está tardando cada parte y así podrás afinar la solución...

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #11  
Antiguo 14-02-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Hola...

Leido lo expuesto con anterioridad, se me ocurre que si trabajas con SQL, quizás sea la forma que se instalo SQL y te dejaron la base de datos de un tamaño limitado....

A un colega le paso que una empresa que vende sistemas ERP (Softland)... le instalaron todo, y que llegado un momento todo se volvio super lento y hasta dejar de trabajar.. el problema fue el limite fijado a la base de datos.... la solución realizar un aumento del tamaño de la base de datos... y/o realizar la configuración para que se autoincremente la base de datos (Tambien se debe configurar el tamaño del Log... )....


Quizás este no sea tu caso, pero nunca esta demás mencionarlo...

Salu2
__________________
BlueSteel
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Aplicación de Servicio+Aplicación Normal +Socket jake API de Windows 5 21-06-2007 18:53:19
Aplicación Web vs aplicación Delphi epuigdef Internet 26 08-05-2007 10:47:12
Cómo cerrar otra aplicacion desde mi aplicacion en Delphi 7 Gaby123 API de Windows 5 04-01-2007 22:44:51
Diferencia entre aplicacion Clx y aplicación normal??? JorgeBec Varios 1 27-10-2004 17:30:49
aplicacion vertical? aplicacion horizontal? maruenda Varios 3 28-02-2004 23:23:20


La franja horaria es GMT +2. Ahora son las 16:19:37.


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
Copyright 1996-2007 Club Delphi