gatling - softshake 2013

Post on 06-May-2015

986 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Slides of my talk about Performance Testing and Gatling @ SoftShake 2013

TRANSCRIPT

Load testing made easy

Pierre DAL-PRA @ eBusiness Information

@pierre_dalpra

Load Testing

Gatling

Load Testing

Gatling

Load testing?

Performance

It’s all ‘bout the money! Conversion rates

Platform costs

Performance

Why care? (from business POV)

Results/page : 10 => 30

+500 ms

-20% pages seen

-1 % sales

Estimated loss: $160M/y

+100 ms

Performance

Why care? (from dev POV)

Fun!

(happens to be useful too) Anticipate

Reproduce

Train

Performance

WDYM?

Performance

means

Fast?

Robust?

Cost effective?

Performance

= Requirements

Speed is

suggestive

contextualized

Traffic & Behaviors

Analytics

Business people

Methodology

(tentative)

Prerequisite

Proper local perf testing!!!

client + network

app debugging

Be scientists

Analyze!!!

Data

Monitor

Tooling • Load injector: Gatling, JMeter,

Locust.io...

• JVM monitoring: JMXtrans, Yammer

Metrics...

• System monitoring: Nagios

• Network monitoring

• Database monitoring

• Dashboard: Graphite, Ganglia

• Webapp mock: H. Gomez's basic perf

webapp

Simulate

Behaviors

Situations

Capacity test

Stress test

Endurance test

Metrics

min/max? mean?

The good, the bad

and the ugly

Metrics

Percentiles FTW!

Iterate!!!

Test Analyze

Fix hotspot

Jmeter, The Grinder,

LoadUI, Tsung, Locust,

Load Runner, Rational,

NeoLoad…

Issue #1

High Performance

1 user =

1 thread

50 threads on a JVM

With 2000 threads

Blocking

I/O

Threads ?

Waiting…

… and sleeping

Usability Issue #2

Listen, it's not

that

complicated...

Graphical User

Interface

Maintainability Issue #3

What is this change about ?

Gatling can

change all that !

Synchronous

1user=1thread

Blocking I/O

- Asynchronous

- Actor model

- Non blocking

I/O

Actors

NIO

Reach new limits

From the Play2 Computer-Database sample.

(cf: https://github.com/gatling/computer-database)

Scenario

Scala

code

DSL

=

=

Use the rich DSL …

Checks

regex / css / xpath / jsonPath find / findAll / count is / in / not / whatever Structures

doIf / repeat / during / asLongAs randomSwitch / roundRobinSwitch Error handling

tryMax / exitBlockOnFail Feeders

csv / tsv / jdbc

… or write your own

Scala code…

… or use the Recorder

• Maven Plugin

• Maven archetype (run in IDE)

• Jenkins plugin

• Graphite live reporting

Coming soon…

• Websockets, JDBC…

• Clustering

http://gatling-tool.org

http://github.com/excilys/gatling

@GatlingTool

top related