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