Hi Baptiste.

Am 08.10.2018 um 16:20 schrieb Baptiste:
> Bonjour Messieurs,
> 
> (je passe en FR et hors ML et je top-poste!!!).

Just for my curiosity, why not answering in english?

Best regards
aleks

> Pierre, je suis déjà en contact avec plusieurs autres Pierre de chez Critéo 
> (le
> prénom, c'est un critère de recrutement chez vous???)
> En tant que "dev" et "mainteneur" du server state, je ne suis pas surpris pas 
> la
> lenteur de chargement, par contre l'ampleur de cette lenteur m'étonne 
> beaucoup.
> En fait, c'est un parcours de liste fait à base de strcmp de mémoire, donc si 
> tu
> as beaucoup de backend qui eux-même ont beaucoup de serveurs, c'est en effet 
> pas
> super optimal.
> On avait fait comme ça car on pensait que le serveur state ne serait pas 
> utilisé
> "at scale" comme vous le faites.
> 
> Pierre: Combien as-tu de backend et de serveur (en moyenne) par backend, dans
> une seule et même configuration
> Il n'y a qu'un seul moyen de virer tous ces warnings, c'est de forcer l'id des
> backend et des serveurs dans ta conf (paramêtre 'id').
> (j'ai prévu de passer chez Critéo la semaine prochaine, je te ferais signe, on
> pourra voir ton problème en live).
> 
> Willy: Il me semble que les backends sont déjà stockés dans des ebtree.
> Pourrait-on stocker aussi les serveurs dans des ebtrees pour accélerer la 
> recherche?
> Ou mieux, faire un arbre qui avec en point d'entrée "<backend>/<server>" ?
> 
> Baptiste
> 
> 
> 
> 
> On Wed, Oct 3, 2018 at 2:00 PM Pierre Cheynier <p.cheyn...@criteo.com
> <mailto:p.cheyn...@criteo.com>> wrote:
> 
>     Hi Willy,
> 
>     > Not really. Maybe we should see how the state file parser works, because
>     > multiple seconds to parse only 30K lines seems extremely long.
> 
>     I would even say multiple minutes :)
> 
>     > I'm just thinking about a few things. Probably that among these 30K 
> servers,
>     > most of them are in fact tracking other ones ? In this case it could 
> make
>     > sense to have an option to only dump servers which are not tracking
>     > others, as for a reload it can make quite some sense. Is this the case
>     > for you ?
> 
>     What do you mean by "tracking other ones"?
> 
>     What I can tell is that, for historical reasons, we named all server the
>     same way for each backends (ie. srvN) in the configuration template, and 
> are
>     using "server templates" to add MAINT servers in the pool so that they can
>     be added at runtime later.
> 
>     This naming thing can be changed now, but I don't know this issue could be
>     related or not.
> 
>     What we're doing basically when getting a new event:
>     * if it requires to delete / update / add server(s) in one or multiple 
> pools
>     we only use the runtime API and try to reuse free slots.
>     * if a backend/frontend has to be created / updated / deleted OR if the 
> free
>     slots for a given backend is full we reload using a configuration 
> template.
>     * in Jinja2 this template looks like (simplified):
> 
>     backend be_foo
>        <options>
>       {%- for server in servers %}
>        server srv{{loop.index0}} {{server.address}}:{{server.port}} weight
>     {{server.weight}}{%- if server.tls %} ssl{%- endif %} check port 8500
>       {%- endfor %}
>        # Create 25 free slots, servers are numbered from N to N+25
>        server-template srv {{ servers|length }}-{{ servers|length + 25 }}
>     0.0.0.0:0 <http://0.0.0.0:0> check disabled
> 
>     Doing this I noticed that we have a lot of 'bad reconciliations' 
> triggering
>     warning logs, such as:
> 
>     [WARNING] can't find server 'srv28' with id '29' in backend with id '9' or
>     name 'be_test'
>     [WARNING] backend name mismatch: from server state file: 'be_foo', from
>     running config 'be_bar'
> 
>     I don't know if these inconsistencies (that clearly have to be fixed) can
>     cause additional delays.
> 
>     Thanks,
> 
>     Pierre
> 


Reply via email to