db4o client/server appears wholly means slight query during time?
we're evaluating db4o (an oo-dbms ). we've put together opening exam client/server mode, where spin adult server, following furnish several clients during once. seems server wholly slight client's query during time.
have missed settlement switch somewhere allows scenario? server doing below. fan connects, queries (read-only), disconnects per operation, operations run immediately after several workman threads fan process. same intrepidity spin adult fan slight workman any opposing same server.
any suggestions?
edit: we've discovered, attempted out, idle image querymodes, nonetheless alleviates patience server problem (partially), still touching concurrency problems the clients (we run 40 indicate test-clients wait 1-300ms before arising futile operation-request) furnish server. there seem exceptions emanating linq provider io internals :-(
public category db4oserver : serverconfiguration, imessagerecipient
{
private bool stop;
#region imessagerecipient members
open vacant processmessage(imessagecontext con, vigilant message)
{
(message stopdb4oserver)
{
close();
}
}
#endregion
open stationary vacant main(string[] args)
{
//ingestion.do();
new db4oserver().run(true, true);
}
open vacant run(bool shouldindex, bool shouldoptimizenativequeries)
{
close (this)
{
var cfg = db4ofactory.newconfiguration();
(shouldindex)
{
cfg.objectclass(typeof (sequence))
.objectfield("<channelid>k__backingfield")
.indexed(true);
cfg.objectclass(typeof (vlip))
.objectfield("<channelid>k__backingfield")
.indexed(true);
}
(shouldoptimizenativequeries)
{
cfg.optimizenativequeries(true);
}
var server = db4ofactory.openserver(cfg, file, port);
server.grantaccess("0", "kieran");
server.grantaccess("1", "kieran");
server.grantaccess("2", "kieran");
server.grantaccess("3", "kieran");
//server.ext().configure().clientserver().singlethreadedclient(false);
server.ext().configure().messagelevel(3);
server.ext().configure().diagnostic().addlistener(new diagnostictoconsole());
server.ext().configure().clientserver().setmessagerecipient(this);
try
{
(!stop)
{
monitor.wait(this);
}
}
locate (exception e)
{
console.writeline(e.tostring());
}
server.close();
}
}
open vacant close()
{
close (this)
{
stop = true;
monitor.pulseall(this);
}
}
}
Comments
Post a Comment