Projet

Général

Profil

Development #17954

Performance de l'API datetimes des rendez-vous

Ajouté par Frédéric Péters il y a plus de 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
10 août 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Il peut facilement y avoir un grand nombre de rendez-vous (guichet ouvert 8 heures par jour, avec des slots de 30 minutes, cinq jours par semaine, avec possibilité de réservation 3 mois à l'avance → 12*5*8*2 = 960).

Faire un request.build_absolute_uri(reverse(...)) pour chacun de ces rendez-vous, ça peut faire mal.

Méthodo, ab -t 10, exécuté une fois pour chauffer la machine, résultat d'une deuxième exécution, pour un datetimes retournant 412 éléments :

Percentage of the requests served within a certain time (ms)
  50%    186
  66%    193
  75%    198
  80%    201
  90%    206
  95%    211
  98%    214
  99%    219
 100%    219 (longest request)
Finished 53 requests

Fichiers

Révisions associées

Révision f7db30cf (diff)
Ajouté par Frédéric Péters il y a plus de 6 ans

api: optimize fillslot endpoint calculation in meetings/datetimes API (#17954)

Historique

#1

Mis à jour par Frédéric Péters il y a plus de 6 ans

Significatif :

Percentage of the requests served within a certain time (ms)
  50%     82
  66%     85
  75%     87
  80%     89
  90%     93
  95%     96
  98%    108
  99%    109
 100%    114 (longest request)
Finished 119 requests
#2

Mis à jour par Josué Kouka il y a plus de 6 ans

ack

#3

Mis à jour par Thomas Noël il y a plus de 6 ans

Moi ça m'irait de ne pas utiliser '00000' qui peut légitimement faire partie de agenda.slug ("La rendez-vous des 100000 fourmis")

#4

Mis à jour par Frédéric Péters il y a plus de 6 ans

Voilà avec la création d'un fake_event_pk qui vérifie qu'il ne se trouve pas dans le slug de l'agenda.

#5

Mis à jour par Thomas Noël il y a plus de 6 ans

Je vais être tatasse, mais y'a pas que agenda.slug dans l'URL (build_absolute_uri)... j'imaginais plutôt quelque chose d'encore plus improbable, comme __event_id__ ? Ou alors garder le 0%d mais vérifier son absence dans request.build_absolute_uri(reverse('api-fillslot', kwargs={'agenda_identifier': agenda.slug, 'event_pk': '0'}))

(Et aussi, avoir un else: raise dans le for ?)

(je sais que je tatasse pour peu de chose, mais bon)

#6

Mis à jour par Frédéric Péters il y a plus de 6 ans

J'imaginais l'event_pk comme étant \d et Django râler sur autre chose que des caractères mais non, c'est \w, et donc très bien event_id.

#7

Mis à jour par Thomas Noël il y a plus de 6 ans

Ack

#8

Mis à jour par Frédéric Péters il y a plus de 6 ans

  • Statut changé de En cours à Résolu (à déployer)
commit f7db30cfccf9e9191fb38c90ef4e3246bbab88a1
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Thu Aug 10 09:25:14 2017 +0200

    api: optimize fillslot endpoint calculation in meetings/datetimes API (#17954)
#9

Mis à jour par Frédéric Péters il y a plus de 5 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF