A talk where we learn various ways to fail at benchmarking. First, important metrics are defined. Then, the Coordinated Omission issue is explained. Finally, Java Microbenchmark Harness (JMH) is explained through code samples.
12. http://tiny.cc/FailAtBenchs @pingtimeout#FailAtBenchs
Exemple
• Bench d’une API REST : POST /login
• 100.000 logins
• 1 utilisateur
• Temps de réponse de chaque login
• Mesure dès le premier résultat
• Une exécution (longue)
• Sur un portable de dev
• Moyenne des résultats
• Projection utilisation CPU <=> Capacité restante
29. http://tiny.cc/FailAtBenchs @pingtimeout#FailAtBenchs
Genèse d’un benchmark
• Une question bien spécifique
• Des exigences précises
• Exemple
• Site de e-commerce
• « Avec mes 5 serveurs d’application, 20.000 articles en base,
et 1.000 clients simultanés, est-ce que la commande d’article
prend moins de 50ms en moyenne, 100ms une fois sur 10 et
300ms au pire ? »
30. http://tiny.cc/FailAtBenchs @pingtimeout#FailAtBenchs
Environnement
• « Avec mes 5 serveurs d’application, 20.000 articles en base,
et 1.000 clients simultanés, est-ce que la commande d’article
prend moins de 50ms en moyenne, 100ms une fois sur 10 et
300ms au pire ? »
• POC:
• TomEE
• Glassfish
• Weblogic
68. http://tiny.cc/FailAtBenchs @pingtimeout#FailAtBenchs
Une erreur fréquente
I rarely see load testers that don't
suffer from it, including common
testers used in the industry (JMeter,
Grinder, HP LoadRunner), benchmarks
(YCSB, SPECeverything, etc.), and
custom build testers I see used by
many low latency shops. » — Gil Tene