Tests de perf en continu
Guillaume Arnaud
@guillarnaud
William Montaz
@willymontaz
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Plan
2
contexte méthodologie
outils Demo
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Anticiper
3
Multithreading dead lock	

isolation	

Contention
ta...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Loi de Little
4
L = λ.𝝉
L = nombre de requêtes
λ = fréquence
𝝉 =...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Loi de Little
5
serveur d’application
1 requête/sec
200 ms
5 req...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Que teste-t-on ?
6
test de perf != test de charge
non exhaustif
...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Ecrire un scénario
7
dialogue simple
un service = un job
débit fi...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Environnement technique
8
serveur d’intégration continu
serveur ...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Gatling
9
!
•Domain Specific Language (DSL) intuitive
•s’intègre...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Gatling: DSL
10
val scn = scenario("My scenario")
.exec(http("My...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Gatling
11
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Graphite
12
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Graphite
13
wildcard
target=server*.cpu
timeshift
target=server1...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Grafana
14
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
JMXTrans
15
{"servers" : [ {
"port" : "8004", "host" : "mysys.my...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Diamond
16
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
Metrics
17
public class QueueManager {
private final Queue queue...
Upcoming SlideShare
Loading in …5
×

Journée DevOps : Tests de performance en continu

1,102 views

Published on

Vous n'avez pas pu assister à la journée DevOps by Xebia ? Voici la présentation de Guillaume Arnaud concernant les tests de performance en continu.

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,102
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Journée DevOps : Tests de performance en continu

  1. 1. Tests de perf en continu Guillaume Arnaud @guillarnaud William Montaz @willymontaz
  2. 2. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Plan 2 contexte méthodologie outils Demo
  3. 3. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Anticiper 3 Multithreading dead lock isolation Contention taille de pool sollicitation BDD Système mémoire cpu DevOps déploiement continu dimensionnement
  4. 4. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Loi de Little 4 L = λ.𝝉 L = nombre de requêtes λ = fréquence 𝝉 = durée moyen des requêtes
  5. 5. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Loi de Little 5 serveur d’application 1 requête/sec 200 ms 5 requêtes
  6. 6. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Que teste-t-on ? 6 test de perf != test de charge non exhaustif temps de référence reproductabilité
  7. 7. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Ecrire un scénario 7 dialogue simple un service = un job débit fixe contrôle des réponses données déterministes
  8. 8. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Environnement technique 8 serveur d’intégration continu serveur de monitoring serveur d’application Diamond graphite déploie ordonne tire récolte alimente alimente alimente récolte
  9. 9. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Gatling 9 ! •Domain Specific Language (DSL) intuitive •s’intègre bien avec Jenkins et Maven •hype: scala, modèle actor •peut être étendu
  10. 10. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Gatling: DSL 10 val scn = scenario("My scenario") .exec(http("My Page") .get("http://mywebsite.com/page.html") .param("username", "bill") .check(status.is(200))) ! setUp(scn.inject( constantRate(20 usersPerSec) during (15 seconds) ))
  11. 11. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Gatling 11
  12. 12. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Graphite 12
  13. 13. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Graphite 13 wildcard target=server*.cpu timeshift target=server1.cpu&from=-30min&until=-10min target=server1.cpu&target=timeShift(server1.cpu, "7d") operations target=sumSeries(server*.cpu, "7d") target=derivative(gatling.hitcount) format de sortie target=server1.cpu&format=json graphique target=server*.cpu&bgcolor=blue&aeraMode=stacked
  14. 14. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Grafana 14
  15. 15. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC JMXTrans 15 {"servers" : [ { "port" : "8004", "host" : "mysys.mydomain", "queries" : [ { "outputWriters" : [ { "@class" : "com.g.j.m.output.GraphiteWriter", "settings" : {"port" : 2003,"host" : "myhost", "typeNames" : [ "name" ]} } ], "obj" : "Catalina:type=…,class=j.s.DataSource,name=*", "resultAlias": "datasources", "attr" : [ "numActive", "numIdle" ] } ], "numQueryThreads" : 2 } ] }
  16. 16. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Diamond 16
  17. 17. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC Metrics 17 public class QueueManager { private final Queue queue; ! public QueueManager(MetricRegistry metrics, String name) { this.queue = new Queue(); metrics.register(MetricRegistry.name(QueueManager.class, name, "size"), new Gauge<Integer>() { @Override public Integer getValue() { return queue.size(); } }); } }

×