[mapserver-users] MapCache: cache some zoom levels, proxy others?

Paul Madden pmadden at nsidc.org
Wed Oct 28 08:55:18 PDT 2015


Hi Thomas,

Thank you for reminding me about metatiling. I was initially using the 
MapServer v6.4 / MapCache v1.2 available with the version of Ubuntu I 
need to use, and disabled metatiling because of a (maybe) bug whereby, 
at some shallow zoom levels, some parts of my layer would fail to appear 
or display. I found that, by varying the <metatile> values, I could push 
the problem to different zoom levels, but I could not seem to eliminate 
it. When I turned metatiling off, this problem disappeared but I then 
saw, probably unsurprisingly, issues with truncated and overlapping 
labels at deep zoom levels. I then built the v7.0 / v1.4 releases from 
source and the problem disappeared. However, Apache would segfault in 
the MapCache module when I tried to use the "sqlite3" cache type ("disk" 
worked fine, but I have more tiles than inodes, so I cannot use it). 
Finally, I built the head of your git master and then "sqlite3" worked 
fine, too. (I can get you a stacktrace of the v1.4 segfault if you're 
interested -- but you seem already to have fixed whatever the underlying 
issue was).

Sorry for the long backstory -- maybe some of it will be useful to someone.

I will try using metatiling again, and will test <threaded_fetching> as 
well. Thanks!

Out of curiosity, can I assume that my other idea, about proxying some 
zoom levels directly to WMS and caching others, is unrealistic?

paul

On 10/28/15 9:36 AM, thomas bonfort wrote:
> Paul,
>
> Are you using metatiling? That would substantially reduce the number
> of requests mapcache does to mapserver.
>
> You also have the
> <mapcache>
> ...
>     <threaded_fetching>true</threaded_fetching>
> </mapcache>
> option, that lets mapcache launch mapserver requests in parallel
> instead of sequentially (YMMV, this option isn't very tested)
>
> --
> thomas
>
> On 28 October 2015 at 16:20, Paul Madden <pmadden at nsidc.org> wrote:
>> I am working with a web application that makes WMS queries to MapCache. The application supports zoom levels 0 through 13, and I have used mapcache_seed to seed the cache through level 10. The deeper levels take so long to seed that I am considering stopping at level 10 and letting MapCache / MapServer produce deeper levels on demand, as users visit them. The problem I'm facing is that, as far as I can tell, MapCache requests tiles from MapServer serially, then stitches together the required image from these tiles, when it receives a request for an uncached level. In one test, 34 separate tiles were requested from MapServer, one at a time, and it took ~30 seconds to render the final image.
>>
>> I'm wondering whether there is a way to configure MapCache to cache/provide a defined set of zoom levels, and to proxy requests at other zoom levels directly to MapServer. I tried setting minzoom and maxzoom on my <grid> in mapcache.xml to "0 10". I tried adding a proxy for my cached layer, hoping that MapCache would redirect requests for unsupported zoom levels to MapServer (I have proxies in place for other, completely uncached layers, and those work fine). I tried copying/renaming the GoogleMapsCompatible grid definition into my mapcache.xml and removing from <resolutions> zoom levels I don't want MapCache to cache. So far, these attempts apparently just prevent MapCache from serving the deeper layers at all.
>>
>> Any thoughts on how I might address this issue? It might also help if MapCache would make concurrent requests for tiles at uncached levels, but I have no idea if this is feasible. And it would be nice to be able to let MapServer handle some zoom levels directly in any case.
>>
>> Thanks in advance for any ideas.
>>
>> Paul Madden
>> National Snow and Ice Data Center
>> _______________________________________________
>> mapserver-users mailing list
>> mapserver-users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapserver-users




More information about the MapServer-users mailing list