Foros Club Delphi

Foros Club Delphi (http://www.clubdelphi.com/foros/index.php)
-   Providers (http://www.clubdelphi.com/foros/forumdisplay.php?f=10)
-   -   Out Of Memory de la aplicacion servidora (http://www.clubdelphi.com/foros/showthread.php?t=92100)

Chary 25-07-2017 21:18:42

Out Of Memory de la aplicacion servidora
 
Buenas:
Estamos trabajando con el modelo de tres capas. Generamos Aplicacion Cliente y aplicacion servidora.
La aplicacion servidora corre en un servidor con bastante recurso, solo que a medida que hay mayor requerimiento, la aplicacion servidora aumenta el consumo de memoria, y cuando llega aproximadamente a 20 MB deja a los clientes muy lentos, en algunos casos sale un error de Out Of Memory.
Lo que hacemos es cerrar y volver abrir la aplicacion servidora.
Alguna sugerencia?

bitbow 25-07-2017 22:15:11

Creo que la descripcion de tu problema es muy vaga, deberias de indicar si consume una base de datos, que base de datos, los conectores que usas, si es una aplicacion servidora que es lo que sirve? ftp, datasnap, http, socket, RESt, WebService?

Asi ojo de buen cubero y adivinando todo mi sugerencia es que sigas reiniciando tu aplicación.

Saludos.

Casimiro Notevi 25-07-2017 22:39:32

Cita:

Empezado por Chary (Mensaje 519694)
Buenas:
Alguna sugerencia?

Buenas, bienvenido, echa un vistazo a nuestra guía de estilo, gracias :)

duilioisola 26-07-2017 16:48:46

Un consumo de 20 MB de memoria ram es muy poco, como para dar un error de ese estilo.
Has verificado que no esté creando memory leaks (creando objetos y no liberando su memoria después de usarlos).
¿Qué es lo que hace la aplicación servidora?
¿Cuando dices "deja a los clientes muy lentos", a qué te refieres?
- Se quedan esperando respuesta.
- La respuesta es demasiado grande y se vuelven lentos.

Chary 26-07-2017 17:24:54

Cita:

Empezado por Chary (Mensaje 519694)
Buenas:
Estamos trabajando con el modelo de tres capas. Generamos Aplicacion Cliente y aplicacion servidora.
La aplicacion servidora corre en un servidor con bastante recurso, solo que a medida que hay mayor requerimiento, la aplicacion servidora aumenta el consumo de memoria, y cuando llega aproximadamente a 20 MB deja a los clientes muy lentos, en algunos casos sale un error de Out Of Memory.
Lo que hacemos es cerrar y volver abrir la aplicacion servidora.
Alguna sugerencia?

Usamos SQL Server 2012. Usamos el UNIDAC, UniConnection. Datasnap.
Lo que hace la aplicacion servidora es capturar parametros del Cliente, luego ejecuta la consulta y devuelve resultados.
Por ejemplo, tenemos un formulario de Pagos en el cliente, el cual necesita datos de la cuenta corriente, el cliente envia los parametros a una instruccion que se encuentra en servidor, el servidor ejecuta la consulta y devuelve los datos al cliente. Que pueden ser descripcion de la cuenta, saldo etc.
Gracias por responder.

Chary 26-07-2017 17:29:23

Cita:

Empezado por duilioisola (Mensaje 519741)
Un consumo de 20 MB de memoria ram es muy poco, como para dar un error de ese estilo.
Has verificado que no esté creando memory leaks (creando objetos y no liberando su memoria después de usarlos).
¿Qué es lo que hace la aplicación servidora?
¿Cuando dices "deja a los clientes muy lentos", a qué te refieres?
- Se quedan esperando respuesta.
- La respuesta es demasiado grande y se vuelven lentos.

Como hago para verificar que no esté creando memory leaks?
Cuando digo que deja a los clientes lentos, me refiero, a que la respuesta de los datos que vienen del servidor tarda bastante.
Por ejemplo, al iniciar la aplicacion servidora una consulta normal tarda un segundo, luego cuando se encuentra con los 20 MB tarda un minuto.
Gracias.

Casimiro Notevi 26-07-2017 17:32:49

Es imposible que podamos ayudar salvo que des muchísima más información.

bitbow 26-07-2017 19:21:24

Prueba este
https://www.eurekalog.com/help/eurek....php?leaks.php
o este que es gratuito (creo)
https://github.com/pleriche/FastMM4

Trata de emular tus consultas (por lo que veo es un servidor DataSnap) desde un ambiente controlado, es decir creo una proyecto de prueba que consuma alguno de tus metodos remotos directamente con parametros fijos (alguna venta, saldo, etc), de esta forma puedes determinar si existe algo mal con el diseño de tu aplicacion servidora o puede ser algo del cliente.

Saludos.

duilioisola 26-07-2017 20:04:04

Yo haría lo que dice bitbow.
Lanzaría consultas una tras otra al servidor y mediría el tiempo de respuesta.

Puede ser que el servidor haga la consulta SQL y deje transacciones abiertas y esto haga que cada Query al SQLServer se vuelva mas lenta.
Puede ser que haga una conexión diferente por cada consulta y esto haga que el servidor SQLServer sea cada vez mas lento.

Yo empezaría mirando el Servidor SQLServer... cuantas conexiones abiertas tiene, cuantas transacciones abiertas tiene, que mas está haciendo, etc.


La franja horaria es GMT +2. Ahora son las 01:34:55.

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