Hello !
Je m'étais amusé il y a un quelques semaines/mois à faire des scripts
artillery[1] pour pollen. J'avais jusque là laisser ça se faire dans
le CI, avec une instance démarrée durant l'exécution et appelée en
local avec un simple sondage normal à deux choix.
J'ai repris cette semaine tout ça, j'ai monté une instance sur
demo4[2], avec trois sondages[3] :
- un "classique" à deux choix
- un condorcet à six choix
- un borda à 20 choix.
J'ai adapté mon scripts pour balancer sur chacun le même processus de
tests :
1/ 20 votes en 1 minute (~ 1 vote toutes les 3 secondes)
2/ 1 vote par seconde pendant 1 minute
3/ Une montée progressive de 1 vote par seconde à 10/seconde pendant 3
minutes
4/ 5 votes par seconde pendant 1 minute
5/ 3 votes par seconde pendant 1 minute
6/ 20 votes en 1 minutes
Cela fait entre 1500 et 1600 votes en 8 minutes.
Si on regarde les résultats finaux (pages html en pièces jointes), on
s'en sort avec ~10% d'erreurs 500 dans le processus. Ces erreurs
proviennent de la période de pic des utilisateurs, et correspondent à
des erreurs d'insertions en base de données.
On se retrouve avec des
```
org.hibernate.StaleObjectStateException Row was updated or deleted by
another transaction (or unsaved-value mapping was incorrect) :
[org.chorem.pollen.persistence.entity.PollImpl#Poll_7ceBowNyRf2wrsvhrNe1Vw]
```
Si je remonte la provenance au niveau service dans la stack :
```
at
org.chorem.pollen.services.service.PollenServiceSupport.commit(PollenServiceSupport.java:276)
at
org.chorem.pollen.services.service.FeedService.saveFeed(FeedService.java:206)
at
org.chorem.pollen.services.service.FeedService.addFeedEntry(FeedService.java:198)
at
org.chorem.pollen.services.service.FeedService.addVoteFeedEntry(FeedService.java:183)
at
org.chorem.pollen.services.service.FeedService.onVoteAdded(FeedService.java:107)
at
org.chorem.pollen.services.service.VoteService.addVote(VoteService.java:282)
```
Il y a peut être un bout de fonctionnalité à revoir ici (ou à virer
complètement ?)
J'ai aussi dans mes résultats des erreurs 400, je n'ai pas vu dans
artillery comment avoir une trace des requètes/réponses (ou je suis
passé à côté). Je soupçonne des soucis dans le jeu de données que je
génère, car je vois rien du tout dans les logs côté serveur quand ça se
produit.
[1]https://gitlab.nuiton.org/chorem/pollen-artillery-tests/
[2]https://pollen-artillery.demo.codelutin.com/
[3]https://gitlab.nuiton.org/chorem/pollen-artillery-tests/-/blob/master/art…
--
Yannick Martel
Code Lutin <http://www.codelutin.com/>
+33 2 40 50 29 28
Restez chez vous.