Devoxx France 2014 - Tests de performance en continu

2,129 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,129
On SlideShare
0
From Embeds
0
Number of Embeds
717
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Devoxx France 2014 - Tests de performance en continu

  1. 1. @XebiaFR#DevoxxFR2014 Tests de perf en continu @willymontaz, @guillarnaud Xebia, blog.xebia.fr William Montaz, Guillaume Arnaud
  2. 2. @XebiaFR#DevoxxFR2014 Plan contexte méthodologie outils GO!
  3. 3. @YourTwitterHandle#DVXFR14{session hashtag} @DevoxxFR#DevoxxFR2014 Contexte
  4. 4. @XebiaFR#DevoxxFR2014 Anticiper Multithreading dead lock isolation Contention taille de pool sollicitation BDD Système mémoire cpu DevOps déploiement continu dimensionnement
  5. 5. @XebiaFR#DevoxxFR2014 Loi de Little L = λ.𝝉 L = nombre de requêtes λ = fréquence 𝝉 = durée moyen des requêtes
  6. 6. @XebiaFR#DevoxxFR2014 Loi de Little serveur d’application 1 requête/sec 200 ms 5 requêtes
  7. 7. @YourTwitterHandle#DVXFR14{session hashtag} @DevoxxFR#DevoxxFR2014 M étho- dologie
  8. 8. @XebiaFR#DevoxxFR2014 Que teste-t-on ? test de perf != test de charge non exhaustif temps de référence reproductabilité
  9. 9. @XebiaFR#DevoxxFR2014 Ecrire un scénario dialogue simple un service = un job débit fixe contrôle des réponses données déterministes
  10. 10. @YourTwitterHandle#DVXFR14{session hashtag} @DevoxxFR#DevoxxFR2014 Outils
  11. 11. @XebiaFR#DevoxxFR2014 serveur d’intégration continu serveur de monitoring Environnement technique serveur d’application Diamond graphite déploie ordonne tire récolte alimente alimente alimente récolte
  12. 12. @XebiaFR#DevoxxFR2014 Gatling ! •Domain Specific Language (DSL) intuitive •s’intègre bien avec Jenkins et Maven •hype: scala, modèle actor •peut être étendu orienté développeur
  13. 13. @YourTwitterHandle#YourSessionHashtag 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) )) Gatling: DSL http://gatling-tool.org/
  14. 14. @XebiaFR#DevoxxFR2014 Gatling
  15. 15. @XebiaFR#DevoxxFR2014 Graphite https://graphite.readthedocs.org/en/1.0/url-api.html
  16. 16. @XebiaFR#DevoxxFR2014 Graphite 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
  17. 17. @XebiaFR#DevoxxFR2014 Grafana http://grafana.org/
  18. 18. @XebiaFR#DevoxxFR2014 JMXTrans {"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 } ] } http://www.jmxtrans.org/
  19. 19. @XebiaFR#DevoxxFR2014 Diamond https://github.com/BrightcoveOS/Diamond
  20. 20. @XebiaFR#DevoxxFR2014 Metrics 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(); } }); } } http://metrics.codahale.com/
  21. 21. @YourTwitterHandle@YourTwitterHandle#YourSessionHashtag G O !

×