[Chameleon] performance of drawmap.php
Kralidis,Tom [Burlington]
Tom.Kralidis at ec.gc.ca
Tue Jun 1 10:40:57 EDT 2004
Hi,
I've found this issue as well, and have conducted numerous experiments
on server side merging /brokering of WMS layers vs. client side (DHTML).
I have found a ratio of 3/4:1 for performance, and thus prefer the
latter approach. I can send out the experiment document if anyone is
interested.
..Tom
> -----Original Message-----
> From: bartvde at xs4all.nl [mailto:bartvde at xs4all.nl]
> Sent: Tuesday, June 01, 2004 10:28 AM
> To: spencer at dmsolutions.ca
> Cc: chameleon at lists.maptools.org; bartvde at xs4all.nl
> Subject: Re: [Chameleon] performance of drawmap.php
>
>
> Hi Paul,
>
> I had a closer look and ofcourse the biggest difference is
> that Mapserver WMS client is in between in the case of my
> drawmap.php call. At least in my situation (all data is
> served through WMS). I found that this is the biggest
> performance decline, as I did a test on requesting an image
> from my application MAP file directly through Mapserver CGI.
>
> This process takes 1300 ms. This means that Mapserver WMS
> client takes about 900 ms in the whole process. This is the
> case when the Mapserver WMS client has to go through a proxy
> (I use an external URL in my app MAP file). If I just use
> localhost in my application MAP file, it all boils down to
> 833 ms (so around 400 ms overhead for the WMS client).
>
> Will it increase my performance and keep my download context
> functionality alive if I use the following:
>
> CONNECTION "http://localhost/...."
> "wms_onlineresource" "the external URL which goes through the proxy"
>
> ???? Then this would be advisable to use or not?
>
> Concluding, the drawmap process only takes an additional
> overhead of around 100 ms.
>
> Your option 1 would not suffice for my applications as mostly
> I need to combine layers from different WMS servers. And as
> we can see now, the overhead is not that much in drawmap.php.
>
> Any possibility that Mapserver WMS client could get faster?
> Or is this maximum performance? Maybe Daniel has some
> thoughts about this?
>
> BTW: I don't use simultaneous requests in the web stress tool.
>
> Best regards,
> Bart
>
> > Bart,
> >
> > good question :) I still have it on my list to look at
> this problem.
> > The differences boil down to:
> >
> > The drawmap method does the following:
> >
> > 1. start apache process
> > 2. load php
> > 3. load mapscript
> > 4. start session
> > 5. load map object
> > 6. execute a bunch of php code
> > 7. draw map
> >
> > The mapserv cgi method does the following
> >
> > 1. start apache process
> > 2. start mapserv cgi
> > 3. load map object
> > 4. draw map
> >
> > I suspect that the load map and draw map steps are roughly the same
> > within a couple of milliseconds. Starting apache and loading
> > mapscript/mapserv should be roughly the same.
> >
> > So the difference lies in:
> >
> > 1. loading php
> > 2. starting the session
> > 3. execute a bunch of php code
> >
> > The code between loading the map object and actually
> producing a map
> > image adds some overhead (but I would be suprised if it is
> more than
> > 50 ms).
> >
> > Note that if the web stress tool does simulatenous
> requests, they will
> > all stall because php does session locking. I had
> originally intended
> > to access the session in some read-only mode that would not
> lock it,
> > this is difficult to do because we actually trap drawing errors and
> > put them into the session so that the user can see why
> layers failed
> > to draw.
> >
> > The reason why we use drawmap is to delay drawing the map until the
> > page has started loading. This increases apparent
> performance while
> > decreasing overall performance by requiring a second process to be
> > started to draw the map. Because of the session locking,
> the drawmap
> > request cannot be performed until after the page has been
> sent to the
> > browser and the main thread has exited. Drawing the map as part of
> > the execution of the application *could* speed up the final product
> > significantly, but in general I think it would result in a slower
> > feeling application, especially if you are using WMS sources. At
> > least this way, the page loads reasonably quickly and you are left
> > waiting for the image.
> >
> > Alternatives ...
> >
> > 1. add a method of requesting the map directly by giving the
> > mapdhtmlwidget a mapserv cgi and passing it the path to the map file
> >
> > - pros: this is probably the absolute fastest way to get the image
> > without actually drawing it while the page loads
> > - cons: this is a security risk because it exposes absolute paths.
> > There may be some ways to limit the security risk, esp on
> linux systems
> > : lose the ability to provide feedback to the user
> on why map
> > draws failed.
> >
> > 2. add an attribute that would cause the mapdhtmlwidget to
> render the
> > image during execution of the application. I think most of
> the code
> > to support this is in the mapdhtmlwidget, it would just
> need a bit of
> > tweaking and a new attribute.
> > - pros: the overall page load time would probably decrease
> > : would maintain the ability to report errors to the user
> > - cons: the responsi
> > veness of the application would be worse
> >
> > 3. write a stripped down drawmap.php, removing some of the
> extra code
> > - pros: maintain existing code in mapdhtmlwidget, maintain
> > responsiveness of application
> > - cons: minimal speed benefit likely
> >
> > Any comments, discussion and more ideas welcome ...
> personally, I like
> > option 1 if security is not an issue (or there are work arounds)
> >
> > Cheers,
> >
> > Paul
> >
> > bartvde at xs4all.nl wrote:
> >
> >> Hi list,
> >>
> >> I have done a test with the Microsoft Web Stress test tool by
> >> requesting an image to drawmap.php, and requesting the
> same image to
> >> Mapserver CGI directly. I only have one visible layer in my
> >> application. All tests performed on the server itself
> (localhost), so
> >> no network traffic involved.
> >>
> >> These are the results:
> >>
> >> directly to Mapserver WMS:
> >> 136 hits in 1 minute: average is 438.86 ms.
> >>
> >> using drawmap.php:
> >> 42 hits in 1 minute: average is 1409.50 ms.
> >>
> >> Why is there such a big performance loss in this step?
> This seems to
> >> be the largest performance bottleneck in Chameleon.
> >>
> >> Best regards,
> >> Bart
> >> _______________________________________________
> >> Chameleon mailing list
> >> Chameleon at lists.maptools.org
> >> http://lists.maptools.org/mailman/listinfo/chameleon
> >>
> >
> > --
> > -----------------------------------------------------------------
> > |Paul Spencer pspencer at dmsolutions.ca |
> > |-----------------------------------------------------------------|
> > |Applications & Software Development |
> > |DM Solutions Group Inc http://www.dmsolutions.ca/|
> > -----------------------------------------------------------------
> >
> > _______________________________________________
> > Chameleon mailing list
> > Chameleon at lists.maptools.org
> > http://lists.maptools.org/mailman/listinfo/chameleon
>
> _______________________________________________
> Chameleon mailing list
> Chameleon at lists.maptools.org
> http://lists.maptools.org/mailman/listinfo/cha> meleon
>
More information about the Chameleon
mailing list