Thanks Robart / Jesse...
Further i am sending the details about what exactly i am doing..please have a look below..
Any help in this regard will be highly appreciated...
MongoDb implementation:
Here is the query i am using :
{ "FormId" : 2, "InsertedOn" : { "$gte" : ISODate("2012-03-31T18:30:00Z"), "$lte" : ISODate("2012-05-01T18:30:00Z") }, "FieldList" : { "$elemMatch" : { "FieldName" : "Name", "FieldValue" : /sarnam/i } } }
i am using 10 query like the above query means all queries only differing in one parameter ("FieldValue" : /sarnam/i ), using different strings in place of "sarnam". Database contains only 22000 documents and number of documents returned varies from 200 to 18000 records. and I initiated 50 or more threads to reproduce the bug "Out of memory exception".
Application is running on windows 7 64 bit operating system.
public List<DynamicFormData> ExecuteQuery(object queryExpression_)
{
List<DynamicFormData> retObject = null;
IMongoQuery qry = (IMongoQuery)queryExpression_;
MongoDatabase db = server.GetDatabase(databaseName);
DependencyResolver.Current.GetService<ILoggingService>().Info("Execute Query With Server State :" + db.Server.State);
try
{
using (server.RequestStart(db))
{
MongoCollection collection = db.GetCollection(typeof(DynamicFormData).ToString());
retObject = collection.FindAs<DynamicFormData>(qry).ToList<DynamicFormData>();
DependencyResolver.Current.GetService<ILoggingService>().Info("Query Executed@@@@@@@ Server Sarnam :" + db.Server.State);
}
}
catch (Exception ex)
{
DependencyResolver.Current.GetService<ILoggingService>().Info("Exception occured :" + db.Server.State + " **** Exception Details :" + ex.Message + "Stack Trace :" + ex.StackTrace);
}
//finally
//{
// // server.Disconnect();
//}
return retObject;
}
Constructor class to register models:
static MongoDBPersistenceService()
{
server = GetConnection();
BsonClassMap.RegisterClassMap<DynamicFormData>(cm =>
{
cm.AutoMap();
cm.UnmapProperty(c => c.UserContent);
cm.UnmapProperty(x => x.Tags);
});
BsonClassMap.RegisterClassMap<Site>();
BsonClassMap.RegisterClassMap<DynamicForm>();
BsonClassMap.RegisterClassMap<DynamicFormQuery>();
BsonClassMap.RegisterClassMap<DynamicFormField>();
}
Connection method:
private static MongoServer GetConnection()
{
MongoServerSettings settings = new MongoServerSettings();
settings.MaxConnectionLifeTime = new TimeSpan(0, 0, 180);
settings.SafeMode = SafeMode.True;
settings.SlaveOk = true;
settings.ConnectionMode = ConnectionMode.Direct;
settings.ConnectTimeout = new TimeSpan(0, 0, 180);
settings.Server = new MongoServerAddress(serverIP, 27017);
settings.WaitQueueTimeout = new TimeSpan(0, 0, 180);
settings.MinConnectionPoolSize =20;
settings.MaxConnectionPoolSize =500;
MongoServer server = new MongoServer(settings);
return server;
}
Thanks!!