---
# System prepended metadata

title: Test de charge 2021

---

---
robots : noindex , nofollow
---

# Test de charge 2021

## Calendrier (retro-planning)

### Campagne de tests :
- du 17 mai au 4 juin 2021


### Réunions préparatoires :
- mardi 4 mai à 10h
- mardi 6 avril à 10h
- mardi 9 mars à 10h
- mardi 2 février à 10h
- mardi 5 janvier à 10h
- mardi 8 décembre à 10h
- jeudi 5 novembre à 10h 

### Lien Zoom :

Sujet : Tests de charge 2021
Heure : Il s’agit d’une réunion récurrente Se rencontrer n’importe quand

Participer à la réunion Zoom
https://us02web.zoom.us/j/88616417026?pwd=TkwyRnVjZGRoaFovblRDVzdYcU1nQT09

ID de réunion : 886 1641 7026
Code secret : charge


## Choix des scénario
- Scénario Portail : 
    - Faut-il en créer un sur l'onglet "Mon Compte" ?
    - Si oui, sur quelle partie ?

- Scénario Pilotage :
    - Rechercher les métadonnées d'une campagne ?
    - Modifier les dates d'une campagne ?
    - Rechercher un utilisateur Coltrane ?
    - Modifier les droits d'un utilisateur Coltrane ?
    - Rechercher un contact : via ses données ? via l'UE ? via la campagne ? 
    - Modifier un contact : détails ? habilitations ? (si pose d'habilitations, sur quelles unités?)
    - Ajouter un contact ?

- Scénario Orbéon :
    - Remplir un questionnaire (accès via le Portail) Ne pas faire de mise à jour de données perso pour ne pas solliciter la base Pilotage
    - Consulter un questionnaire (site miroir)

- Scénario Batchs :
    - FILLPILOTAGE / FILLSTROMAE
    - DECOUPAGEPERSO
    - PERSOCHAINE Initialisation (pas de mail pas de courrier)
    - EXTRACTIONSCONTACTS / EXTRACTIONSREPONSES
    - SUPPRESSION? INFORMATIONSSUPPRESSION?

- Scénario eXist : 
    - Voir avec Lars pour définir des tests purement eXist

## Construction du questionnaire à utiliser
- Créer un nouveau questionnaire à utiliser 
    > Avec un nom parlant TDC ou TESTCHARGE ou ...
Il peut être fictif, pas nécessairement un copié/collé d'une enquête existante
- Réexpédiable ?
- Définir les réponses à programmer 
- Calibrer le temps de réponse, définition de la durée des pauses à implémenter

## Initialisation de toutes les données nécessaires
- Questionnaires
- Contacts pour Portail avec les bonnes habilitations
- Interrogations
- Unités Enquêtées
- Utilisateurs pour Pilotage
- ...
> Certaines initialisations sont "automatiques" via le PersoChaine mais bien penser à vérifier leur bonne réalisation

## Réalisation des livrables 
Choix de la version à déterminer à l'avance pour avoir le temps de réaliser les IHM sans authentification ?
- Portail (sans Keycloak)
- Pilotage (sans Keycloak)
- Orbéon (sans Keycloak)
- Batchs

## Jeux de données
- Liste d'IdeP pour se connecter à Pilotage
- Liste d'IdeC pour se connecter au Portail

## Procédure de mise en place des bases
- Au préalable le CEI fera une copie des données de Prod en QF3 afin d'avoir des bases de données avec un volume similaire à la Prod
    - Décider de la date de cette copie

- Les bases de données, en Debian 8 eXist 4.7, seront préparées par l'équipe de maintenance en QF3 puis copiées en PreProd par le CEI
    > Bases de QF3 :
    qfcoltpilldb03 debian 8 exist 4.7
    qfcoltorbldb03 debian 8 exist 4.7
    
    >Bases de PreProd :
    ppcoltpilldb74 debian 8 exist 4.7
    ppcoltorbldb74 debian 8 exist 4.7

- Chargement des Healthcheck
Attention : pour la mise en place du healthcheck, mettre l'id/mdp à la ligne 24 du fichier restxq/util/healthcheck-beta.xquery.
Lancer un batch FILLSTROMAE sur le zip contenant ce fichier.

- Finalisation
    - Base Orbeon 
    remise aux carrés des droits : GET sur change-permission-tmc.xquery
    ré-enregistrement des services : GET sur store-again-xqm.xquery 
    - Base Pilotage
    remise aux carrés des droits : GET sur change-permission.xquery
    ré-enregistrement des services : GET sur store-again-xqm.xquery

## Les annuaires
- Les **IdeC**, avec les bonnes habilitations, doivent être créés dans l'annuaire **externe** de **PreProd**.
https://preprod.gestion-annuaire-externe.insee.fr/modifier/formulaire?identifiant=UWSHU85&radio=contacts&domaine=COL
- Les **IdeP**, avec les droits sur Utilisateurs_Coltrane-Pilotage, doivent bien figurer dans l'annuaire **interne** de **PreProd** 
https://preprod.services.insee.fr/securite-applicative/recherche/application/Coltrane-pilotage/groupe/Utilisateurs_Coltrane-Pilotage

## Entre deux tirs 
- Réinitialisation de la base Orbéon : supprimer les réponses (xml et pdf)
- Corriger la partie suivante ?
    > "<stromae>
     <util>
     <sectionCourante>1</sectionCourante>
     <nomSectionCourante/>
     <expedie>**non**</expedie>
     <extrait>**non**</extrait>
     <dateHeure/>
     </util>
     <perso/>
     </stromae>"
     Peut-être pas nécessaire si le questionnaire est réexpédiable ?
- Healthcheck sur Orbeon : Vérifie l'accès en lecture et l'enregistrement d'un questionnaire
- Healthcheck sur Pilotage : Vérifie l'accès en lecture 

## Plan de tir

### Calibrage

Un **acte métier** est une exécution d’un **scénario** de bout en bout.
Le temps d’exécution unitaire de l’acte métier est la base du calcul.

La durée d’un acte métier peut être obtenue avec un tir de calibrage fait avec 100 itérations par exemple. La durée totale est ensuite divisée par 100 pour obtenir la durée moyenne d’un acte métier. Tout est exprimé en seconde.

Les tirs nominaux se font sur 1h, on calcule le nombre de scénarios successifs réalisables en 1h soit 3 600 secondes. On parle alors d’**itérations**.

Le **nombre d’actes métier par heure** est fixé par la MOA (aidé de la maintenance).
Le CEI applique une marge de 20% à ce qui est demandé.

En divisant le nombre d’acte métier par heure par le nombre d’itérations possibles en 1 heure, on obtient le **nombre de threads ou VU** nécessaires pour atteindre l’objectif fixé par la MOA.

**VU :** Virtual User : nombre de threads dans Jmeter (obligatoirement un entier) 
**thread :** fil d'exécution

La durée de la **rampe** est un multiple du temps unitaire.
Les fils d'exécution sont mis en action de manière échelonnée sur cette durée.
Le nombre de threads doit être inférieur à ce temps d'exécution en seconde pour avoir un minimum d'une seconde entre chaque lancement de thread (VU).
Il faut que tous les VU / threads soient lancés en moins de 5 minutes (300s).
La rampe correspond à la **phase de montée en charge** (puis de descente en fin de tir).
Si il y a un seul thread la rampe n’a pas lieu d’être.

Quelques données chiffrées :
Pour le scénario de réponse à une enquête, on a 2 400 000 réponses potentielles attendues par an.
Soit 200 000 par mois, 10 000 par jour et 1 250 par heure (avec 20 jours par mois et 8 heures par jour).
On peut donc garder 1 600 actes métier par heure et 3 200 (et éventuellement 6 400).

Il faudrait que notre scénario de réponse à un questionnaire se joue entre 10 et 12 minutes.


```
Tir sur 1 heure = 3 600 secondes
Souhait 1 600 am/h => 1 920 avec la marge de 20%
Durée d’un am : 12 minutes soit 720 secondes
3 600 / 720 = 5 itérations par thread
Cela fait 384 soit 384 threads = VU
La rampe est de 720 secondes (/!\ supérieur à 300 s)
Les 384 threads sont lancés toutes les 1,88 secondes
```
Pour les autres scénarios, à voir sur quels critères on peut se baser pour estimer le nombre d'acte métier par heure.


### Tirs unitaires
Chaque scénario une fois pour s'assurer qu'il fonctionne et chronométrer le temps "de base"
- Déroulé du questionnaire TDCANN
- Déroulé du questionnaire TDCTRIM
- Mise à jour des données sur l'onglet "Mon compte"


### Tirs nominaux (sur 1 heure)
*Bien penser au nombre de VU (virtual user), en simultané (400 mini) et sur une heure (2000 mini)*


### Tirs mixtes


### Tirs d'endurance 12h (voire 24h)


### Faire des tirs uniquement sur les BDD eXist
Voir avec eXist Solution pour nous aider à spécifier ces tests
Faire des tests de performance avant fin mai? en QF3?


# Documentation

Répertoire "Tests de Charge" sous gitlab coltrane-doc
https://gitlab.insee.fr/plateformes-collecte/coltrane/documentation/coltrane-doc/-/tree/master/Tests%20de%20Charge/2021_scalabilit%C3%A9

Le but est de mettre ici tous les documents utiles

# Contacts CEI

Céline Blaise : 03 55 94 39 36 ou 06 20 02 24 44
Hélouri Morvan : 03 87 50 98 04

# Documents tests de charge Coleman

https://gitlab.insee.fr/cigal/tmc/coleman/-/tree/master/


# Réunions préparatoires
## Jeudi 5 novembre 
### Ordre du jour
Je propose de focaliser cette première réunion préparatoire sur les scénarios de tests et le (ou les?) questionnaire(s?) à utiliser.
Que souhaite-t-on tester?
Quelles fonctionnalités des IHM?
Quels types de questions dans le questionnaires? Boucles? Données antérieures? ...
Quels batchs?

Oublions les précédents scénarios. On repart de zéro.
En effet les précédents tests de charge se focalisaient essentiellement sur les bases de données. Le but était de voir à quelle niveau de charge les bases "plantaient".
Mais il n'y a pas que les bases, les serveurs tomcat aussi peuvent saturer. Les lenteurs ne proviennent peut-être pas toujours de lenteur côté base de données.



### CR de la réunion

#### Partie Questionnaire :
On va prendre des questionnaires existants, on ne crée pas de questionnaires tests ou démo.
On part sur l'idée de 2 questionnaires : 
    - un simple : surement TIC
    - un complexe : surement OPISE 2021 qui passe bientôt en DDI 3.3
(On ne peut pas utiliser OFATS ou ECMOSS  car la navigation est particulière pour ces 2 enquêtes)

On va combiner des accès aux questionnaires en tant que répondants et en tant que gestionnaires.

Pour la partie site miroir : vérifier si le chargement des données est unique en début de connexion ou pas.

#### Partie Portail

On ajoute une modification d'adresse mail et une fusion de compte. Pour ne pas démultiplier les scénarios, ces actions seront intégrées aux scénarios de réponse à un questionnaire.
On simule donc que le répondant commence par modifier son compte avant d'accéder à son questionnaire.

On aura 2 scénarios de réponse à une enquête : un sur le questionnaire simple et un sur le questionnaire complexe

#### Partie Pilotage
On va faire un seul scénario qui enchaine plusieurs actions
    - Recherche d'un contact via son IdeP
    - Modification de son adresse mail
    - Réinitialisation de son mot de passe avec envoi par mail
    - Création d'un contact
    - Modification de date pour une enquête
    - Ajout de droit ldap à un utilisateur et ajout en base

#### Partie Batchs
On souhaite faire un PERSOCHAINE en Initialisation et éventuellement en Mise à jour (ESA utilise ce batch presque tous le jours) => Vérifier les impacts avec l'annuaire de pré-prod qui sera utilisé pour les tests de charge
On garde les exécutions d'EXTRACTIONSREPONSES et EXTRACTIONSCONTACTS

#### A faire d'ici la prochaine réunion : 
- Vérifier la façon de récupérer les données depuis le site miroir : un seul GET à la connexion?
- Réaliser les descriptifs des scénarios (repartir des 3 documents, Coltrane_..._tests_charge_2020_juin.odt, fournis lors des derniers tests de charge https://gitlab.insee.fr/plateformes-collecte/coltrane/documentation/coltrane-doc/-/tree/master/Tests%20de%20Charge%202021/Archives2020)
- Analyser les logs des "PERSOCHAINE Mise à jour" pour voir si il y a un lien avec les ralentissements observés 
    - Persochaine du 2 décembre à 10h00 et 12h00 coltrane-ESA-2020-A00-contacts...
    - Persochaine du 30 novembre à 10h00 coltrane-ESA-2020-A00-contacts...
     - 
- Initialiser le fichier de perso à utiliser par le PERSOCHAINE

## Mardi 8 décembre 
### Ordre du jour
- Passer en revue les avancées depuis la dernière réunion
- Ajout de tests eXist direct sur la bdd à planifier avec eXist Solution

### CR de la réunion
- Recopie des pièces jointes de l'ancien ticket kanboard dans gitlab (cf lien modifié ci-dessus)
- On maintient l'idée des questionnaires TIC et OPISE 2021

## Mardi 5 janvier
### Ordre du jour
(non établi)

### CR de la réunion
- Voir avec Benjamin pour formaliser la procédure de test de charge uniquement sur les bases eXist
- Demander au CEI si ils ont des exemples de définition de scénarios afin de pouvoir rédiger proprement nos scénarios
- Demander au CEI les critères de charges par heure, nombre de VU, ...


## Mardi 2 février
### Ordre du jour
- Avancement des scénarios
- Disponibilité des questionnaires choisis : TIC et OPISE?
- Comptes de tests : combien? nouveaux? Préparer un fichier de Perso pour les créer?


### CR de la réunion
(non rédigé)

## Mardi 9 mars
### Ordre du jour
(non établi)

### CR de la réunion

A priori on va finalement utiliser des questionnaires **non** ré-expédiables

Questions à poser côté CEI : 
- Quid des annuaires internes et externes, est-on bien branché sur des annuaires de preprod?
    - Oups! en preprod les batchs sont bien sur l'annuaire externe de preprod mais pas les IHM!!!
    - Pour l'annuaire interne on est sur celui de prod aussi il me semble...
- A-t-on bien des droits en écriture sur ces annuaires pour modifier les droits si besoin?
- Combien de temps faut-il pour recopier toutes les données des 2 bases? Est-ce envisageable de prévoir cette opération entre 2 tirs pour "réinitialiser" les données?
    - pour info la copie de prod vers preprod pour orbeon a duré 3h47 et 1h23 pour pilotage.

To do côté maintenance :
- Estimer le nombre d'idec et d'idep nécessaires? et faire les listings dès que possible
- Estimer le nombre d'idue? et faire le listing dès que possible
- Voir avec Ophélie si elle avait une "astuce" pour créer le fichier de perso d'initialisation des campagnes
    - il existe un script qui permet de générer des fichiers de perso : https://gitlab.insee.fr/enquetes-entreprises/integration/integration-coltrane-vague99

To do côté administration : 
- Réfléchir au scénario de mutualisation de comptes, est-ce envisageable ou sommes-nous "coincés" à cause des habilitations présentes dans le LDAP?
- Préparer les livrables pour intégrer les enquêtes en preprod 
- Continuer sur la description des scénarios

## Mardi 6 avril
### Ordre du jour

- Passer en revue les étapes de bascule pour installer toute la nouvelle architecture en Préprod pour pouvoir réaliser les tests de charge
    - https://hackmd.io/YxqG01IwTdG4SxWc2VfddQ

### CR de la réunion

- Tester les URL "en direct" et depuis le portail et/ou questionnaire pour s'assurer que les redirections fonctionnent correctement
- Mettre à jour la QoE
- Mettre en place la redirection avant d'avoir 2 bases en indiquant base 1 pour toutes les sources dans le tableau de référencement sous db/Pilotage/Meta => Permet de livrer/tester les nouvelles versions de Portail, Pilotage et Batchs sans agir sur la bdd orbeon
- Nettoyage / Archivage des "vieilles" sources pour lesquelles il ne reste plus que le forms
- Mettre en prod la nouvelle version du batch InformationsSuppression pour pouvoir faire du ménage avant de passer à la scalabilité

## Mardi 4 mai
### Ordre du jour
- Point sur les livrables
    - les 2 forms : 
        - tic-2021-a00 modifié sous tdcann-2021-a00 (orbeon) => prêt
        - opiseserv-2021-t02 modifié sous tdctrim-2021-t02 (orbeon i) => prêt
    - les métadonnées : Pilotage/Source
        - TIC/2021/A00 modifié sous TDCANN/2021/A00 => prêt
        - OPISESERV/2021/T02 modifié sous TDCTRIM/2021/T02 => prêt
    - les params : Pilotage/Params
        - TIC/2021/A00 sous TDCANN/2021/A00 => prêt
        - OPISESERV/2021/T02 sous TDCTRIM/2021/T02 => prêt
    - les 2 fichiers de perso 30 000 comptes
        - 
    - les 3 ihms sans keycloak :
        - portail 
        - pilotage
        - orbeon
    - les batchs
    - les WS sans restxq : 
        - base orbeon
        - base pilotage
        - appels directs depuis orbeon
    - ??? 
