Friday, October 03, 2008

Mapguide Performance Tips

Here's a quick list of things which will really help you make MapGuide reach
it's full performance potential.

  1. Avoid RDBM's for static data, SDF is dramatically faster and lower system load
  2. Always use tiled maps, tiled maps are cached, which means scalable
  3. Always use Managed Resources, that is SDF's uploaded into the repository
  4. Enable SDF connection pooling in serverconfig.ini (requires changing DataConnectionPoolExcludedProviders)
  5. Increase the cache size to 3-4 times your layer count per map (CacheSize)
  6. Never filter, use theming or pre-cook you data as SDF only is spatially indexed
  7. Use the latest Mapguide 2.0.2 it's by far the best release yet
  8. Pre cook your tiled maps using my Mapguide Tile Seeder
  9. Consider using Openlayers as your client interface, legends are a bottleneck
  10. Use Linux, MapGuide really sings on Linux, on Windows it doesn't
And lastly, buy a license for MapGuide Enterprise and support the ongoing development of the project, be smart about it and go thru an Autodesk partner who actively takes part in the MapGuide community and contributes to the project.

Personally, I recommend sticking with MapGuide Open Source, even after I buy a license, as the release cycle is faster than the fully tested Enterprise release. But remember, you also get a really cool stable Raster provider with Mapguide Enterprise which you can also use with MapGuide Open Source.

I work for a company called Ennoble Consultancy, we are an Autodesk Partner and are here to help, so if even if you feel like sticking with MapGuide Open Source, but you'd also like to support the project, give us a call or email us and lets see what we can do!

I really love my Job, I'm a Solution Architect who codes and also is client facing. That's the really cool thing about working at Ennoble, we are a team of young people who have a passion for making things work.

Technology has changed a lot these days, a lot of Companies are still using organisational structures and roles which date back to the old pure C++ and C era's. Times have changed...

The old approach IMHO just ain't up to the task of being responsive to business needs anymore...

At Ennoble we like to collaborate and be responsive with our clients. It makes work fun, let's face it, we spend most of our time working in our lives...why not make it enjoyable?

In the next few months I will be blogging about some rather nifty projects we have been working on...

11 comments:

Anonymous said...

what about GD Vs. AGG?

Zac Spitzer said...

True, AGG is slower but GD is being phased out...there's a RFC

It seems to be the main issue holding people from upgrading to 2.0x

Anonymous said...

Do you have any stats for MapGuide being faster on Linux?

Zac Spitzer said...

nothing concrete, but have you ever seen a responsive mapguide server on windows running at 97-100% on all 4 cores?

which wasn't stuck?

I have seen that on linux. Besides the service on linux dies nicely, unlike the windows version.

Anonymous said...

I'm just curious. It would be good to achieve better response times from MapGuide so I'm curious if it's worth the pain/time of Linux.

firecat said...

Which Linux distro do you use? I tried compiling MGOS 2.0.2 on Ubuntu 8.04 with no success.

Zac Spitzer said...

I had success on centos 4.6 32-bit

you might want to try out the new cmake build system, checkout my latest blog entry for the link

Unknown said...

Zac,

I've had good luck with theming on large SDF features sources (200MB+, 100k+ rows). I think the performance penalty comes in using multiple layers on a single SDF file and FDO filters. You end up having a lot of contention and apparently each layer will do it's own scan of the SDF file. I believe theming takes place further down in the pipeline and doesn't actually ask FDO for a data filter.

Also, what about very large feature sources? A detailed street data set can consume 20-30GB of space easily. Have you experimented with SDF on data at this scale? Most SHP readers/writers are limited to 2GB files as they don't implement large file I/O.

-rb

Anonymous said...

How do you use the raster provider from Mapguide Enterprise in Mapguide Open Source?

Zac Spitzer said...

you just need to copy the dll's from the MGE fdo folder, you can work out which ones the provider xml file and then using depends.exe.

It must be from the same FDO version, ie MGE2010 and 2.1, MGE2009 and 2.0.2 and so on

Ari said...

I have successfully used the gdal provider to display ecw files with aerial photos in a map in mapguide open source 2.1 final release on Windows XP. I had to add the following dll files in the bin folder on the mapguide server to get this to work:
Lti_dsdk_cdll.dll
Lti_dsdk_dll.dll
NCScnet.dll
NCSEcw.dll
NCSEcwC.dll
NCSUtil.dll
gdalplugins/Gdal_ecw_jp2ecw.dll
gdalplugins/Gdal_MrSID.dll

I am now trying to do this on another machine but it doesn't work. Might it be because it has another operating system
(Windows Server)? I have noticed that Gdal_ecw_jp2ecw.dll is referencing the files MSVCP71.dll and MSVCR71.dll using depends.exe that were on the machine with Windows XP but these files are not
on the machine that has Windows Server. I added a few extra dll files in the bin folder in Mapguide on the Machine that has Windows Server. Here are they:
geotiff.dll
libtiff.dll
jpeg_osgeo.dll
zlib_osgeo.dll
and then I also added msvcr71.dll and msvcp71.dll in the bin folder.
I still can't get it to work. When I run the server in debug mode the application fails because of a missing dll with the name jpeg12_osgeo.dll.
Do you have any idea how I could get the gdal provider to work on this machine?