Guides pour RDV-Solidarités
  • Guides et ressources de RDV-Solidarités
  • Les guides d'utilisation
    • Pour les agents
      • Guide d'utilisation pour les agents
        • Compte et connexion
        • Fiches usagers
        • Notifications usagers
        • Notifications agents
        • Interface Agent
        • Status de rendez-vous
        • File d'attente
        • Fusionner les doublons
        • Annulation de Rendez-vous
        • FAQ
      • Comment démarrer sur RDV-solidarités ?
        • Comment se connecter ?
        • Effectuer le paramétrage
          • Votre organisation
          • Vos lieux
          • Vos agents
          • Vos motifs
          • Vos statistiques globales
        • Définir votre planning
          • Créer des plages d’ouverture
          • Créer et gérer les absences
        • Créer votre base d’usagers
          • Comment créer une fiche usager en charge ?
          • Comment créer une fiche usager proche ?
          • Comment consulter l’historique des rendez-vous d’un usager ?
          • Comment rechercher un usager dans la base usager ?
        • comment gérer ses rendez-vous ?
          • Comment accéder au calendrier d’un autre agent ?
          • Comment poser un rendez-vous ?
            • 1. Directement sur l’agenda de l’agent
            • 2. Recherche de tous les créneaux disponibles
          • Comment consulter et modifier le résumé d’un rendez-vous ?
        • RDV Collectifs
        • Comment se déconnecter ?
    • Pour les Conseillers Numériques
    • Pour une organisation
      • Permissions des agents
      • Suppression d'agent
    • Pour un territoire
      • Créer une organisation
      • Configuration Territoire
      • Sectorisation géographique
        • Logique détaillée de la sectorisation
        • Exemple 1 : Par commune et par organisation
        • Exemple 2 : Sectorisation par rue et par agent
  • Documentation Technique
    • Hébergement & sécurité
    • Interconnexions aperçues
    • API de requêtes
      • Généralités
      • Authentification
      • Usagers
      • Agents
      • Organisations
      • Absences
      • Motifs
    • API de notifications
      • Format des données
      • FAQ
      • Vérification de signature
      • Outlook
      • Microsoft Dynamics
      • Interconnexion par email et icalendar
    • Envoi de SMS
    • États de rendez-vous
  • Organisation d'équipe
    • Le rôle de la personne référente
    • Estimations
    • Data.insertion aka RDV-Insertion
    • Gouvernance
    • Réunions Référentes
      • Réunion référentes du 19 avril 2022
      • Réunion référentes du 12 avril 2022
      • Réunion référentes du 5 avril 2022
      • Réunion référentes du 29 mars 2022
      • Réunion référentes du 22 mars 2022
      • Réunion référentes du 15 mars 2022
      • Réunion référentes du 8 mars 2022
      • Atelier RGPD du 7 mars 2022
      • Réunion référentes du 1er mars 2022
      • Atelier RGPD du 24 février 2022
      • Réunion référentes du 22 février 2022
      • Réunion référentes du 15 février 2022
      • Réunion référentes du 8 février 2022
      • Réunion référentes du 1er février 2022
      • Réunion référentes du 25 janvier 2022
      • Réunion référentes du 18 janvier 2022
      • Réunion référentes du 11 janvier 2022
      • Réunion référentes du 4 janvier 2022
      • Réunion référentes du 14 décembre 2021
      • Réunion référentes du 7 décembre 2021
      • Réunion référentes du 30 novembre 2021
      • Réunion référentes du 16 novembre 2021
      • Réunion référentes du 9 novembre 2021
      • Réunion référentes du 2 novembre 2021
      • Atelier RDV Collectif du 29 octobre 2021
      • Réunion référentes du 26 octobre 2021
      • Réunion référentes du 19 octobre 2021
      • Réunion référentes du 12 octobre 2021
      • Réunion référentes du 5 octobre 2021
      • Réunion référentes du 28 septembre 2021
      • Réunion référentes du 21 septembre 2021
      • Réunion Référents du 25 mai 2021
      • Réunion référent.e du 11 mai 2021
      • Réunion référent.e du 4 mai 2021
      • Réunion référente du 27 avril 2021
      • Réunion référentes du 16 mars 2021
      • Réunion référents du mardi 16 février 2021
      • Réunion référentes du mardi 2 février 2021
      • Réunion Référents du 19 janvier 2021
      • Avant 2021
        • Réunion Référents du 24 novembre 2020
        • Réunion référentes 3 décembre 2019
        • Réunion référentes du 8 décembre 2020
  • Informations générales
    • Informations générales et légales
      • Conditions d’utilisation de la plateforme RDV-Solidarités
      • Mentions Légales
      • Politique de confidentialité
      • À propos de RDV-Solidarités
      • Outils de prise de rendez-vous
      • Liste des champs stockés dans la base de données
      • Point de situation de l'équipe au 23 avril 2021
      • Incidents
        • Incident du 17 décembre 2021
        • Incident du 1er octobre 2021
        • Incident du 29 septembre 2021
        • Incident de septembre 2021
        • Incident du 7 septembre 2021
        • Incident du 29 avril 2021
        • Incident du 17 mars 2021
    • Dernières nouveautés
      • Modifications de 2021
      • Modifications de 2020
Powered by GitBook
On this page
  • Incident
  • Contexte
  • Chronologie
  • Enseignements
  • Analyse
  • Travaux restants
  • Point d'étape au 25 octobre 2021
  1. Informations générales
  2. Informations générales et légales
  3. Incidents

Incident de septembre 2021

Cette page décrit une situation au 22 septembre. Elle est à compléter pour inclure l'ensemble des travaux et difficultés lié à ces problèmes de performances

Incident

Le site a été très lent dans l’après-midi, puis inaccessible pendant environ 30 minutes, entre 16:00 et 16:26. Toutes les tentatives de connexion échouaient sur une erreur 500.

Contexte

Nous avons des problèmes de performance depuis quelques semaines ; globalement, pendant les heures de bureau, le temps d’accès au site augmente de façon significative. Nous avons activé l’« autoscale » des instances web chez notre hébergeur Scalingo en début de semaine. L’autoscale est configuré pour passer automatiquement de 2 à 5 instances web. Ce sont des instances L, avec un 1GB de mémoire. En pointe, ces instances consomment beaucoup, et atteignent rapidement la limite (et donc swappent). Nous étions depuis le début de la semaine en train de préparer des optimisations de performances.

Chronologie

  • Mercredi

    • À partir de 13:17: erreurs 500 intermittentes et crashes répétés des instances web, redémarrées à mesure par Scalingo.

    • 13:49, 13:55, 14:27: scale automatique de 2 à 3, 4 puis 5 instances L

    • 15:23, 15:25, 15:27: Tentatives de scale et de redémarrage manuel de 5 instances L à 5 instances XL. Sans effet: erreurs côté Scalingo.

    • environ 15:30: Contact du support Scalingo.

    • 16:04:59: alerte de updown.io indiquant que le site n’est plus accessible

    • 16:08, 16:12, 16:16, 16:18 :alertes de Michèle M., Sophie N, Clarisse B, Elise F. Merci !

    • 16:17: email de Nicolas B. à toustes les référentes pour signaler la panne, et sa prise en charge.

    • 16:17: suppression de l’autoscaler

    • 16:12, 16:17, 16:19, 16:20: autre tentatives de scale et redémarrage manuel

    • 16:21: lancement d’un nouveau déploiement de la production à partir du code. Il fonctionne en 4 minutes 21.

    • 16:26: updown.io indique que le site est accessible à nouveau

    • 16:41: email de Nicolas indiquant le retour en ligne

  • Jeudi

    • 8:15: Scale manuel de 5 instances L à 5 instances XL

    • Tout au long de la journée, quelques crashes de l’instance jobs, redémarrée automatiquement par Scalingo

  • Vendredi

    • 12:12: échec d’un déploiement en production, à cause de l’épuisement des connections à la base de données

    • 12:15: scale de 5 instances XL à 3 instances XL

    • 12:27: déploiement des améliorations de performance.

Enseignements

En fait, l’autoscale de Scalingo permet d’augmenter le nombre d’instances, mais pas d’augmenter la mémoire. Nous aurions pu commencer par passer sur des instances XL, ce que nous avons fait ensuite.

Sur l’instance jobs, on a aussi un problème de mémoire, mais c’est moins critique. Il y a a priori une fuite de mémoire, mais la seule conséquence est que l’instance est redémarrée quand elle atteint la limite, et reprend les jobs là où elle s’est arrêtée.

La base de données PostgreSQL est actuellement limitée à 30 connections. Nos instances web font tourner Puma avec 5 threads; avec 5 instances web et l’instance jobs, on atteind la limite!

Analyse

  • Le passage a 5 instances L a permis de mitiger les problèmes, mais ne règle rien: notre problème est plus un problème d’utilisation mémoire que de processeur.

  • Le passage à 5 instances XL a permis de passer la journée de jeudi sans tomber à nouveau.

  • Le déploiement des optimisations vendredi après-midi a fait chuter le temps de réponse médian, qui reste autour de 150ms, alors qu’il était autour de 2-3 secondes.

Travaux restants

  • Le serveur de base de données est lui aussi sous-dimensionné: il atteind ses limites de mémoire.

    • Nous avons un serveur avec 512Mo; nous pouvons passer soit à un serveur 1Go, soit à un cluster de 2 nodes avec chacun 512Mo. Cette deuxième solution a aussi l’avantage de permettre des montées de version de la base de données sans interruption de service.

    • Nous avons commencé la procédure mais rencontrons là aussi des erreurs côté scalingo.

  • La charge CPU reste assez élevée sur les 3 instances XL. On pourrait peut-être mieux servis par une ou deux instances 2XL.

Point d'étape au 25 octobre 2021

  • L’autoscaler fonctionne pas mal, y compris avec des petits débrayages à midi.

  • Le temps de réponse médian ne décolle pas, même pendant les pics

  • C’est sur ceux-ci qu’on va se concentrer maintenant

PreviousIncident du 29 septembre 2021NextIncident du 7 septembre 2021

Last updated 3 years ago

Le déploiement de ce midi était à la bonne heure

😅
Temps de réponse mercredi, jeudi et vendredi. Le trait rouge indique le déploiement des optimisations.
En haut le nombre de requêtes par minutes, en rouge, les erreurs (requête non aboutie) ; en bas, le temps de réponse