Slide 1

Slide 1 text

Load Testing like a

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

irb(main):017:0> gatling.load_test(rails_app) TypeError: can't convert Scala into Ruby from (irb):16:in `load_test' from (irb):16 from bin/irb:12:in `'

Slide 4

Slide 4 text

a DSL emulates real user behaviour val scn = scenario("Login") .exec(http("My website") .get("/login") .headers(headers_1) .check( regex("""""") .saveAs("auth_token")) .exec(http("Login") .post("/login") .headers(headers_5) .param("csrf-token", "${auth_token}") .param("username", "xxxx"))

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Scalable Engine : Not a thread per user Actor based concurrency Java 7 Asynchronous Good GC NIO framework

Slide 7

Slide 7 text

Executive summary

Slide 8

Slide 8 text

Average & StdDev : never again ! average of 1.2 seconds and standard deviation of 0.6 seconds

Slide 9

Slide 9 text

Average & StdDev : never again ! average of 1.2 seconds and standard deviation of 0.6 seconds Unhappy users are here

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Gatling as a service

Slide 13

Slide 13 text

Root cause analysis

Slide 14

Slide 14 text

Need more data Infrastructure monitoring CloudWatch, collectd.org,... profiling/instrumentation/sampling in your code or through agent à la NewRelic, home made with statsd,...

Slide 15

Slide 15 text

Query missing indexes select * from db select n+1 deadlock, missing/bad cache Resource limits process / thread / connections pool garbage collection / network resource leak / cpu starvation Latency network external api rate limit isolate services

Slide 16

Slide 16 text

Opensource Nice DSL to emulates real user behaviour Scalable engine Great reports/metrics by default C I - able Available “As a Service”

Slide 17

Slide 17 text

More on the subject https://flood.io/blog/13-stress-testing-jmeter-and-gatling https://flood.io/blog/14-getting-started-with-gatling https://flood.io/blog/27-socket-io-and-websockets-with-gatling http://mestachs.wordpress.com/2012/03/31/performance-when-average-is-not-enough/ http://gatling-tool.org/cheat-sheet/ http://maxdemarzi.com/2013/02/14/neo4j-and-gatling-sitting-in-a-tree-performance-t-e-s-t-ing/ http://laurent.bristiel.com/getting-started-with-gatling-for-stress-test/ https://github.com/maxdemarzi/neo_permissions/blob/master/performance/src/test/resources/simulations/RandomPermissions.scala#L18 https://github.com/excilys/gatling-hands-on/blob/master/gatling-hands-on-demo/src/test/scala/computerdatabase/Step10.scala https://wiki.jenkins-ci.org/display/JENKINS/Gatling+Plugin http://puppetlabs.com/blog/puppet-gatling-and-jenkins-together http://briancain.herokuapp.com/projects/puppetgatling http://blog.newrelic.com/2013/01/22/understanding-new-relic-queuing/ http://www.webperformance.com/library/tutorials/CalculateNumberOfLoadtestUsers/ http://www.slideshare.net/ZeroTurnaround/stephane-landelleblastyourappwithgatling https://twitter.com/GatlingTool http://blog.roddet.com/2013/06/gatling2-new-inject-api/

Slide 18

Slide 18 text

More on the subject http://jsebfranck.blogspot.be/2013/09/gatling-dynamic-parameters-example.html http://www.igvita.com/2014/03/26/why-is-my-cdn-slow-for-mobile-clients/ http://i.imgur.com/k0t1e.png http://www.eecs.berkeley.edu/~rcs/research/interactive_latency.html