Caching OSM tiles - how to not overload backends?

tranxene50 tranxene50 at openvz-diff-backups.fr
Tue Jun 16 22:21:22 UTC 2020


Hello!

Many thanks for your answers! :-)

@Dridi:

You are right, writing a specific VMOD would be the ideal solution but 
unfortunately I am not qualified for the job. ^^

By the way, I would like to thank all the people who are working hard to 
enhance and maintain Varnish.

This software is absolutely awesome!

@Xavier:

Before considering HAProxy, I searched if quick and dirty hacks were 
possible with iptables to limit simultaneous connexions and tc to shape 
the traffic.

But, after a quick reading of the documentation of HAProxy, it became 
clear that - as you said - it is a reliable solution.

So, thanks the for the hint!

Have a great day!

Le 16/06/2020 à 00:17, Xavier Leune a écrit :
> Hello,
>
> @tranxene50 if implementing a vmod can be very challenging, using 
> haproxy can be a great solution here. Please refer to this blog post: 
> https://www.haproxy.com/fr/blog/four-examples-of-haproxy-rate-limiting/ (or 
> in french ;) 
> https://www.haproxy.com/fr/blog/four-examples-of-haproxy-rate-limiting/ ). 
> The very first step is about setting a maximum connections number and 
> a queuing. Using haproxy as your backend would require low engineering 
> and a minimum overage.
>
> Regards,
>
> Le lun. 15 juin 2020 à 20:02, Dridi Boukelmoune <dridi at varni.sh> a écrit :
>
>
>     Bonsoir,
>
>     Unfortunately we don't have any sort of queuing on the backend side,
>     so besides implementing your own backend transport from scratch in a
>     VMOD there is currently no solution.
>
>     Cordialement,
>     Dridi
>
>     On Sun, Jun 14, 2020 at 2:32 AM tranxene50
>     <tranxene50 at openvz-diff-backups.fr
>     <mailto:tranxene50 at openvz-diff-backups.fr>> wrote:
>     >
>     > Hello!
>     >
>     > Please forgive my bad English, I live in France.
>     >
>     > Summary: how to cache - with Varnish - Open Street Map PNG
>     images without overloading OSM tiles servers?
>     >
>     > The question seems related to Varnish backends and
>     ".max_connections" parameter.
>     >
>     > A far as I know, if ".max_connections" is reached for a backend,
>     Varnish sends 503 http errors.
>     >
>     > I understand the logic but would it be possible to queue these
>     incoming requests and wait until the selected backend is really
>     available?
>     >
>     > backend a_tile                  {
>     >   .host                         = "a.tile.openstreetmap.org
>     <http://a.tile.openstreetmap.org>";
>     >   .port                         = "80";
>     >   .max_connections              = 2;
>     > }
>     >
>     > If Varnish have, let's say 100 incoming requests in 1 second,
>     how can I handle this "spike" without overloading the backend?
>     >
>     > All my google searches were "dead ends" so I think the question
>     is poorly formulated.
>     >
>     > Note 1 : using [random|round_robin] directors could be a
>     temporary solution
>     > Note 2 : libvmod-dynamic is great but does not limit backend
>     simultaneous connexions
>     >
>     > Many thanks for your help!
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20200617/c3d3d2ad/attachment.html>


More information about the varnish-misc mailing list