Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Colaboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #9  
Antiguo 27-12-2007
JARivera JARivera is offline
Registrado
 
Registrado: may 2007
Posts: 6
Poder: 0
JARivera Va por buen camino
Unhappy Update: Indy TCP Server: Uso de CPU 100% tras 5 min

Bueno, solo para comentarles, el problema sigue alli, despues de actualizar a Indy9 (D6 venia con Indy 8... tuve que hacer bastantes cambios para actualizar). De paso, cai en la cuenta de un problema con los threads, que ya solucione, pero lo del 100% de CPU se resiste a desaparecer. A veces son mas de 5 minutos, pero no veo un patron.
Dentro de la misma aplicacion tengo otro servidor TCP, en otro puerto, aunque alli suele haber una o dos conexiones, y ese no me causa problemas.
A continuacion una version simplificada del codigo OnExecute del servidor TCP:

Código Delphi [-]
 
procedure TfrmMyServer.ServerTCPExecute(AThread: TIdPeerThread);
var
  Data    :string;
  MyThread:TMyThread;
  Client  :TMyClient;
begin
     if AThread is TMyThread then
        MyThread:=TMyThread(AThread)
     else
         MyThread:=nil;
     with AThread.Connection do
     begin
         //espera la transmisión del cliente
         try
            Data:=readln('',TCPReadlnTimeout);
         except on E:Exception do
            begin
                 Data:='';
            end;
         end;
         if not(AThread.Connection.Connected) or not(ServerTCP.Active) or (AThread.Terminated) then
            exit;
         if shuttingdown then
                exit;
         if(Data <> '') then
         begin
              
              if MyThread<>nil then
              begin
                   Client := MyThread.Client;
                   if Client<>nil then
                   begin
                        //todo se asigna para ser manejado por el thread
                        Client.Data:=GetReport;
                        Client.PeerIPTCP := athread.Connection.Socket.Binding.PeerIP;
                        Client.portTCP := athread.Connection.Socket.Binding.PeerPort;
                        AThread.Synchronize(TMyThread.ProcessTCP);
                   end;
              end;
         end;
     end;//Athread.Connection
end;
 
//y el codigo simplificado de TMyThread.ProcessTCP es:  
 
procedure TMyThread.ProcessTCP;
var
   data:string;
   IpAddr:string;
   IpPort,ID:Integer;
begin
     data:=Client.Data;
     ipAddr:=Client.PeerIPTCP;
     ipPort:=Client.portTCP;
     ProcessPackage(data,ipAddr,ipPort,ID,PROTO_TCP);
     Client.ID:=ID;
end;

donde ProcessPackage es una rutina que parsea la data y actualiza la base de datos usando ADO, y devuelve un ID.

Sin embargo, aun si pongo entre comentarios esa llamada, es decir, no hago nada en la base de datos, de todas formas sigue disparandose el uso de CPU. Alguna idea?

Última edición por jachguate fecha: 28-12-2007 a las 05:57:11. Razón: Añadir etiqueta [delphi]
Responder Con Cita
 



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
Cuál es la Mejor forma de Eliminar Conexiones Clientes de un Server Indy R_Richards Internet 4 22-07-2010 15:11:09
Ayuda con incompatibilidad del Post de TIdHTTP de Indy 8 con Indy 10 rolandoj Internet 13 24-12-2008 13:19:01
email con indy cual uso ; server o cliente cmena Internet 13 15-09-2005 20:53:12
Error Ejemplo Chat en Indy tcp (server & socket) Clantt Internet 7 15-09-2005 16:39:44
.dll's que quedan tras desinstalación santana Oracle 8 26-04-2004 22:45:23


La franja horaria es GMT +2. Ahora son las 03:28:45.


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