Foros del Web » Programación para mayores de 30 ;) » .NET »

Consumo memoria

Estas en el tema de Consumo memoria en el foro de .NET en Foros del Web. Hola, tengo una aplicación ASP.NET (Framework 3.5) con base de datos MySQL. Es una aplicación grande que va llamando a procedimientos almacenados para ejecutar las ...
  #1 (permalink)  
Antiguo 17/09/2010, 02:12
 
Fecha de Ingreso: octubre-2004
Mensajes: 39
Antigüedad: 19 años, 6 meses
Puntos: 1
Consumo memoria

Hola, tengo una aplicación ASP.NET (Framework 3.5) con base de datos MySQL.

Es una aplicación grande que va llamando a procedimientos almacenados para ejecutar las consultas.

El problema es que consume muchísima memoria. Tengo otras aplicaciones en el servidor, un Windows Server 2008 con 4 GB de Ram (IIS7), pero el proceso:

mysqld-nt.exe 370.000 Kb
w3wp.exe 210.000 kb

He pueto un pool diferente para cada aplicación, así que ese es el de la aplicación en concreto.

Algo tiene que estar pasando, ya que la base de datos tiene un tamaño de 1Mb, la tabla más grande tiene 60.000 registros y no almaceno imágenes ni nada raro.

No sé si se me estará quedando algo pillado, es problema de los índices o que...pero el rendimiento deja frito el servidor cuando tengo 9 o 10 sitios web corriendo la aplicación.

Esta es la parte del código que conecta con la bbdd, por si alguien ve algo raro. En teoría se abre y se cierra la conexión por cada consulta, por lo que no debería quedarse pillada ninguna:

public void execute_NonQuery_procedure(string StoredProcedure, Hashtable hParams)
{
MySqlConnection oConnection = new MySqlConnection();

try
{
//***** Ontenemos la cadena de conexión *****//
string sConnection = ConfigurationSettings.AppSettings[DB];
oConnection = new MySqlConnection(sConnection);

//***** Creamos el comando *****//
MySqlCommand oCommand = new MySqlCommand(StoredProcedure, oConnection);
oCommand.CommandType = CommandType.StoredProcedure;

//***** Obtenemos los parámetros *****//
IDictionaryEnumerator en = hParams.GetEnumerator();
while (en.MoveNext())
{
oCommand.Parameters.AddWithValue(en.Key.ToString() , en.Value);
oCommand.Parameters[en.Key.ToString()].Direction = ParameterDirection.Input;
}

//***** Abrimos la conexión y ejecutamos *****//
oConnection.Open();
oCommand.ExecuteNonQuery();
}
catch (Exception e)
{
throw e;
}
finally
{
oConnection.Close();
}
}



public DataSet get_DataSet_procedure(string StoredProcedure, Hashtable hParams)
{
MySqlConnection oConnection = new MySqlConnection();

try
{
//***** Ontenemos la cadena de conexión *****//
string sConnection = ConfigurationSettings.AppSettings[DB];
oConnection = new MySqlConnection(sConnection);

//***** Creamos el comando *****//
MySqlCommand oCommand = new MySqlCommand(StoredProcedure, oConnection);
oCommand.CommandType = CommandType.StoredProcedure;

//***** Obtenemos los parámetros *****//
IDictionaryEnumerator en = hParams.GetEnumerator();
while (en.MoveNext())
{
oCommand.Parameters.AddWithValue(en.Key.ToString() , en.Value);
oCommand.Parameters[en.Key.ToString()].Direction = ParameterDirection.Input;
}

//***** Abrimos la conexión y ejecutamos *****//
oConnection.Open();

DataSet ds = new DataSet();
MySqlDataAdapter da = new MySqlDataAdapter(oCommand);

da.Fill(ds);
return ds;
}
catch (Exception e)
{
throw e;
}
finally
{
oConnection.Close();
}
}


GRACIAS
  #2 (permalink)  
Antiguo 17/09/2010, 08:20
 
Fecha de Ingreso: marzo-2007
Mensajes: 74
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Consumo memoria

Pues esta muy bien lo unico que el

oConnection.Close();

no libera memoria lo deja temporalmente para ser re-abierto en cualquier momento
para cerrra y que elimine de memoria utiliza

oConnection.Dispose();

Saludos.

Etiquetas: memoria
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:30.