PDA

Ver la Versión Completa : Alto consumo de memoria virtual!!


Alunizator07
28-02-2007, 11:55:19
Hola.
Os escribo este post con la esperanza de que alguien me pueda ayudar con un problemilla que empieza a ser muy urgente y preocupante. Desde hace algún tiempo trabajo para una empresa en la que desarrollamos en delphi 5. El caso es que tenemos que montar una serie de aplicaciones de procesamiento de ficheros de datos y envío de correos a clientes en una máquina con windows2000. El caso es que cuando pruebo las aplicaciones en mi equipo de desarrollo (también con Windows2000), el consumo de memoria, tanto física como virtual, es "normal" (en torno a unos 30 megas) pero cuando se las pasamos al departamento de explotación para que las monten en producción, el consumo de memoria virtual se dispara en algunos casos a mas de 300 megas, produciendo el desagradable mensaje de "Out of Memory". Esto se produce en las que usan los componentes ftp, pop3 y smtp de la paleta "fastnet" de delphi 5, y en otras dos que se conectan a otra máquina vía sockets. Llevamos bastante tiempo detrás del tema, y no hemos dado con la solución. El tema nos es muy urgente, porque perdemos mucha información y tenemos que reprocesarla "a mano". Ya no sabemos si es sólo tema de los componentes, o de algún parámetro del sistema operativo o de la máquina que sea distinto en los equipos de desarrollo con respecto al de producción 8 o ambas cosas). Os agradecería cualquier idea que me pudierais ofrecer al respecto, porque empiezo a estar desesperado y llevo mucho tiempo invertido en este asunto sin resultado.
De veras, muchas gracias de antemano.

Casimiro Notevi
28-02-2007, 13:43:05
Creo, ojalá me equivoque, que si no tenemos acceso a ese ordenador y tampoco tenemos el software que estás usando, ¿cómo te vamos a ayudar?

Alunizator07
28-02-2007, 13:54:57
No os puedo dar acceso al equipo ni al software dado que están en la red de mi empresa y no puedo hacer nada de eso. Necesitaría alguna idea que puedan tener sobre lo que está pasando y qué puedo probar y comparar en los dos equipos (desarrollo y producción), como parámetros del sistema, o directivas de compilación, o algo así, para que pueda seguir investigando. El resto ya me lo guisaría yo solo. Comprended que son equipos y aplicaciones de empresa y no está en mi mano daros ningún tipo de acceso ni el código de las aplicaciones.

Ñuño Martínez
28-02-2007, 14:11:12
Entiendo la situación, pero alguna pista más seguro que puedes dar.

A bote pronto se me ocurre que el problema puede estar en que durante el desarrollo se han utilizado una cantidad limitada de datos de prueba con pocas conexiones, y al ponerlo en producción se ha encontrado con muchos más datos reales y más conexiones, haciendo que se hinche.

Alunizator07
01-03-2007, 10:48:41
Hola.
Antes de nada muchas gracias por tu interés. Te lo agradezco de veras. No creo que sea tema de la cantidad de datos, porque al darnos cuenta del problema, arrancamos una aplicación sola en el servidor de producción, y aislamos la cantidad de datos, pero el consumo de memoria se dispara desde que se arranca, creo que en el caso de esta aplicación la subida brusca se produce en el momento en el que el componente ftp de la paleta fastnet se conecta a nuestro servidor ftp. Pasa lo mismo en otras con componentes de esta paleta. Con el servidor smtp, cada vez que se conecta para enviar un mensaje, sube el consumo, y el problema es que luego no se libera. he utilizado la funcion "SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);" que leí en la página del Dr. Marteens, y me libera memoria física, pero la virtual la deja como está, y teoricamente debería hacer una liberación de ambas. En otra aplicación que se conecta vía sockets a otro equipo nos pasa tres cuartos de lo mismo: en el momento de la conexión sube el consumo, y ahí se queda, no la libera. El caso es que desde mi equipo, desde el que están compiladas todas estas aplicaciones, esto no pasa, y lo malo es que no puedo instalar la versión de delphi en el equipo de producción para compilarlas desde allí a ver si eso me soluciona algo. No se que más pistas puedo daros, no se me ocurre nada más, ni que más cosas puedo mirar. La verdad es que esto no nos había pasado antes, y empieza a ser un poco desesperante.

Casimiro Notevi
01-03-2007, 20:39:50
Por qué no pruebas a hacer un programita muy, muy simple con únicamente ese componente para ver si es el culpable o no.

mamcx
01-03-2007, 21:05:34
Creo que aparte de adivinar y suponer, las soluciones son:

1- Llevar tu equipo de desarrollo a la empresa y mirar
2- Usar http://www.automatedqa.com/downloads/memproof/ para ver si tienes un problema de mala liberacion de memoria
3- Probar con http://fastcodeproject.org/ para reemplazar el manejador de memoria de Delphi por uno mejor (el que usa Delphi 2005+ es muuuy rapido y eficiente y evita la fragmentacion de memoria)
4- Te falto las especificaciones del equipo. Datos a mirar: Puede que el servidor tenga hyperthreading, tenga mucha memoria, use varios procesadores, este alineado al lado incorrecto de la luna. Sobre todo eso ;)

La otra?

Contrata a alguien y dale acceso por vnc o algo...