[mapserver-dev] Memory leak in mapcache

Jeff McKenna jmckenna at gatewaygeomatics.com
Wed May 15 13:24:44 PDT 2019


I wonder if we should tag a MapCache release today, there are over 2 
years of changes committed since the last release 
(https://github.com/mapserver/mapcache/compare/rel-1-6-1...master).  -jeff



On 2019-05-15 4:37 PM, Lime, Steve D (MNIT) wrote:
> Not that I saw - nothing from Patrick beyond the original post - at 
> least not to the list.
> 
> ------------------------------------------------------------------------
> *From:* mapserver-dev <mapserver-dev-bounces at lists.osgeo.org> on behalf 
> of Stephen Woodbridge <stephenwoodbridge37 at gmail.com>
> *Sent:* Wednesday, May 15, 2019 1:33:08 PM
> *To:* mapserver-dev at lists.osgeo.org
> *Subject:* Re: [mapserver-dev] Memory leak in mapcache
> Was there a followup on this? I don't remember seeing one.
> 
> Thanks,
>     -Steve W
> 
> On 4/15/2019 4:36 AM, Patrick Valsecchi wrote:
>> Hi Thomas, Long time no see!
>>
>> Every kind of request leaks. Even a WMS GetCapabilities (done by the 
>> health-check) leaks, but at a lesser rate than a GetMap. The web UI 
>> does requests in //, but the ingress limits at 10 connection in //.
>>
>> And it's not just that it allocates a big chunk of memory and stays 
>> there. It leaks continuously until the OOM wakes up and kills one of 
>> apache's worker. I had to set a limit of 100 requests (every 100 
>> requests the worker process is killed and a new one is forked) per 
>> worker to keep memory usage at bay.
>>
>> Thanks
>>
>> On Fri, Apr 12, 2019 at 7:12 PM thomas bonfort 
>> <thomas.bonfort at gmail.com <mailto:thomas.bonfort at gmail.com>> wrote:
>>
>>     Hi Patrick,
>>     What kind of requests is mapcache responding to, and at what
>>     concurrency? Serving multiple large wms requests is typically an
>>     example where large chunks of memory will be allocated.
>>
>>     --
>>     thomas
>>
>>     On Fri, Apr 12, 2019 at 12:42 AM Patrick Valsecchi
>>     <patrick.valsecchi at camptocamp.com
>>     <mailto:patrick.valsecchi at camptocamp.com>> wrote:
>>
>>         Hi,
>>
>>         I'm using mapcache v1.6.1 (tested as well with a master build)
>>         in docker and I can see huge memory increases in the apache
>>         process memory usage when mapcache is used (it's the only
>>         thing this apache instance is serving). The thing is
>>         configured like that:
>>
>>             <mapcache>
>>                <cache name="default" type="memcache">
>>                   <server>
>>                      <host>prod-2-4-c2cgeoportal-memcached</host>
>>                      <port>11211</port>
>>                   </server>
>>                </cache>
>>
>>                ...
>>
>>                <tileset name="map">
>>                  <source>map</source>
>>                  <cache>default</cache>
>>                  <grid>swissgrid_005</grid>
>>                  <metatile>5 5</metatile>
>>                  <metabuffer>128</metabuffer>
>>                  <format>image/png</format>
>>                  <expires>3600</expires> <!-- 1 hour -->
>>                  <auto_expire>13800</auto_expire> <!-- 4 hours -->
>>               </tileset>
>>
>>
>>         I can see that memcached is used in it's stats and only
>>         mapcache uses it.
>>
>>         But the the memory usage of the whole mapcache container looks
>>         like that:
>>         image.png
>>
>>         Each dip in usage is when the OOM kills one of the apache
>>         workers (out of a maximum of 3 workers). I have configured a
>>         memory limit in docker at 512MB.
>>         Nothing shows up in the apache logs.
>>
>>         Are there any known memory leaks? Do I have a bad
>>         configuration? I could have the apache workers restarted every
>>         10 queries, but that would be utterly ugly and inefficient...
>>
>>         Thanks for your help.
>


More information about the mapserver-dev mailing list