I'm playing with GeoServer 1.6.0-RC2 + ArcSDE plugin (with SDE/Oracle
as database server) and I don't have any particular problem: all works
well and performances are acceptable.
The only "problem" is that my database is composed by dozens of layers
(maybe 50 or more), and 10gb of data in total.
This introduces two kind of problems:
1) Performances (of course!): when i ask for all layers, the
performances are slow.
2) ArcSDE connection pooling: when i configure my SDE datastore, looks
like min/max connection pools are better if similar to default
(someone has verified this behavior?); i use minPool=2 and maxPool=5
for optimal performances.
As client for my data i use OpenLayers and i query my data using
Geoserver WMS support, so I need to know if it's possible to create
several Tomcat+Geoserver instances mapped to the same SDE datasource.
I hope that this kind of solution could remove second limitation
(ArcSDE connection pooling) and improve first limitation
(performances).
Any suggestions?
--
Diego Guidi
Hi Diego,
glad you're having a nice experience using the GeoServer ArcSDE extension.
Unfortunately I can't give you a definitive answer on how to improve
performance. Actually I guess no tech answer could replace experimenting, so
here go a couple thoughts:
- About connection pooling, I would of bet increasing maxPool _should_ bring
some improvement, since requesting those 50+ layers concurrently with 5
connections means some time will be spent waiting for connections to be
freed.
Connection pooling for ArcSDE is instrumented in order to cope with two ArcSDE
issues. The first is obviously the per-connection licensing ArcSDE use
(used?) to have, so the maxConnections parameter. The second is the usual
mean for pooling, it is quite expensive to create a new connection, so
pooling alleviates the situation.
About increasing maxConnections not leading to a performance increase, I can't
figure out a reason from the top of my head, yet, the 2-5 defaults has no
special meaning, like there's no benchmarking saying its a reasonable default
for optimal performance.
Also, its hard to predict where the bottleneck(s) are. May it be something bad
on the ArcSDE DataStore, the network impedance between geoserver and the
ArcSDE server, a scalability issue in geoserver itself, a tomcat problem to
handle as many concurrent requests, or even a web browser slow down handling
the requests, or anything else escaping my imagination...
Too much things to infer about without a profiler. Yet, it would be nice if
you can keep experimenting and report back your experience. It is definitely
possible to have more than one geoserver instance running pointing to the
same ArcSDE backend, so go ahead and try that.
Finally, did you implement some sort of perf meter? or is it just
the "perceived" round trip time it tooks to get an image in OpenLayers?
Please keep commenting/asking as this is definitely an interesting and worth
topic.
cheers,
Gabriel
On Tuesday 08 January 2008 12:29:32 pm Diego Guidi wrote:
I'm playing with GeoServer 1.6.0-RC2 + ArcSDE plugin (with SDE/Oracle
as database server) and I don't have any particular problem: all works
well and performances are acceptable.
The only "problem" is that my database is composed by dozens of layers
(maybe 50 or more), and 10gb of data in total.
This introduces two kind of problems:
1) Performances (of course!): when i ask for all layers, the
performances are slow.
2) ArcSDE connection pooling: when i configure my SDE datastore, looks
like min/max connection pools are better if similar to default
(someone has verified this behavior?); i use minPool=2 and maxPool=5
for optimal performances.
As client for my data i use OpenLayers and i query my data using
Geoserver WMS support, so I need to know if it's possible to create
several Tomcat+Geoserver instances mapped to the same SDE datasource.
I hope that this kind of solution could remove second limitation
(ArcSDE connection pooling) and improve first limitation
(performances).
Any suggestions?
Finally, did you implement some sort of perf meter? or is it just
the "perceived" round trip time it tooks to get an image in OpenLayers?
It's only a perceived impression.
Please keep commenting/asking as this is definitely an interesting and worth
topic.
Thanks for your suggests: i keep trying and i post my experiences soon.