SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
© Copyright 2017 resourcepool 1
Performance Tuning
Kill the Bottleneck
Loïc Ortola
© Copyright 2017 resourcepool 2
Loïc Ortola
CTO @ jawg
Loïc Ortola @LoicOrtola
loic@jawg.io
DevOps– Archi – Dev Fullstack
Java – Node.js – Angular/React – Android – IoT
© Copyright 2017 resourcepool 3
Wonderland
Les mensonges de l’IT
© Copyright 2017 resourcepool 4
Unlimited Resources
no bottleneck, no hardware failure, no latency
© Copyright 2017 resourcepool 5
Scalability is assumed
All technologies are easily scalable
Languages & platforms do not matter
© Copyright 2017 resourcepool 6
And it’s for free
© Copyright 2017 resourcepool 7
© Copyright 2017 resourcepool 8
Welcome to
Wonderland
© Copyright 2017 resourcepool 9
Limited Resources
One or more bottlenecks, multiple hardware failures, latency
© Copyright 2017 resourcepool 10
Quels sont les différents bottlenecks usuels?
© Copyright 2017 resourcepool 11
Bottlenecks and time-units
•  CPU
•  cycle horloge ~ 0.3 ns
•  Mémoire
•  cycle horloge * CAS latency ~ 15 ns
•  ~20 gbps throughput
•  Network:
•  latency ~ 10 ms
•  ~100 mbps throughput
© Copyright 2017 resourcepool 12
Bottlenecks and time-units
•  NVME:
•  R/W d’un bloc ~ 5 us
•  ~ 300k IOPS
•  ~ 10 gbps throughput
•  SSD:
•  R/W d’un bloc ~ 100 us
•  ~ 50k IOPS
•  ~ 5 gbps throughput
•  HDD:
•  R/W d’un bloc ~ 10 ms
•  ~ 150 IOPS
•  ~ 400 mbps throughput
© Copyright 2017 resourcepool 13
“Mais non, t’inquiète, ca marchera”
Failures & Latency
© Copyright 2017 resourcepool 14
Failures
© Copyright 2017 resourcepool 15
Latency
•  Touche tous les niveaux d’une infrastructure
•  Dépend de nombreux facteurs
•  Peut souvent entrainer des erreurs en cascade
© Copyright 2017 resourcepool 16
Scalability is non-trivial
V vs H scaling, clustering, sharding
© Copyright 2017 resourcepool 17
Lois Universelles du scaling
•  La scalabilité verticale est toujours utile à considérer
•  Ajouter un noeud a toujours un cout
•  New point of failure
•  Adds management costs
•  Adds app & architecture complexity
© Copyright 2017 resourcepool 18
Technologies
•  Relational Databases & ACID
•  Clustering enabled technologies
•  Sessions, Websockets & technologies connectées
© Copyright 2017 resourcepool 19
Comprendre les règles
Pour mieux les contourner
© Copyright 2017 resourcepool 20
Le chemin complet
© Copyright 2017 resourcepool 21
Le chemin complet
•  DNS
•  Socket binding, read, app connector
•  Business Logic
•  DB
•  Business Logic
•  Socket write
•  Close
© Copyright 2017 resourcepool 22
Load-testing
Make the invisible visible
© Copyright 2017 resourcepool 23
Les bottlenecks potentiels
•  Trop de charge sur la DB è IO / CPU / RAM
•  Stratégie d’écriture des Logs
•  Bande passante
•  Développement applicatif
•  Dimensionnement pool de connexions
•  Dimensionnement worker-pool
•  Dimensionnement heap / JVM
•  Garbage collection
•  Conf Kernel
© Copyright 2017 resourcepool 24
Mo-ni-to-ring
© Copyright 2017 resourcepool 25
Système
htop : CPU / RAM
iostat / iotop : I/O
netstat: Sockets / connections
© Copyright 2017 resourcepool 26
Applicatif
VisualVM: Threads / Heap / CPU / GC
© Copyright 2017 resourcepool 27
DB
•  Logger les requêtes lentes
•  Monitorer les temps d’exécution
slow_query_log=1
slow_query_log_file=/var/log/mysql/mysql-slow.log
© Copyright 2017 resourcepool 28
Les injecteurs
•  Percentiles des temps de réponse
•  Connections concurrentes
•  Utilisateurs concurrents
© Copyright 2017 resourcepool 29
Les optimisations
© Copyright 2017 resourcepool 30
La Conf!
•  Optimiser les tailles de pools
•  Configurer sa JVM (GC, Heap-size, triggers, etc…)
•  Configurer ses logs (async-flush)
•  Fine-tuner sa DB
•  Fine-tuner son OS
© Copyright 2017 resourcepool 31
La DB
•  Optimiser les requêtes
•  Indexer différemment
•  Sharder / Clusteriser / Changer de DB?
© Copyright 2017 resourcepool 32
L’application
•  Résoudre les bugs
•  Limiter la création d’objets (buffers ou object-pools)
•  Limiter la copie
•  Utiliser du cache mémoire
•  Optimiser l’utilisation des threads
•  Devenir non-bloquant au possible
•  Changer de technologie ?
© Copyright 2017 resourcepool 33
L’architecture
•  Scaler intelligemment
•  Répartir la charge
•  Sharder / clusteriser
•  Ajouter des niveaux de cache
•  Répartir sur des régions + Anycast DNS
© Copyright 2017 resourcepool 34
Test-case : Jawg Maps

Contenu connexe

Tendances

Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésRomain Hardouin
 
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015Modern Data Stack France
 
Cassandra pour les développeurs java
Cassandra pour les développeurs javaCassandra pour les développeurs java
Cassandra pour les développeurs javaJérémy Sevellec
 
Des cas d'intégration client par Sword: XL Airways, Ministere de la Culture...
Des cas d'intégration client par Sword: XL Airways, Ministere de la Culture...Des cas d'intégration client par Sword: XL Airways, Ministere de la Culture...
Des cas d'intégration client par Sword: XL Airways, Ministere de la Culture...Nuxeo
 
Découverte de Redis
Découverte de RedisDécouverte de Redis
Découverte de RedisJEMLI Fathi
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocutionParis_Storm_UG
 
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Jérôme Mainaud
 
Scalabilité de MongoDB
Scalabilité de MongoDBScalabilité de MongoDB
Scalabilité de MongoDBMongoDB
 
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...Sébastien Prunier
 
BBL - Monitoring - kyriba
BBL - Monitoring - kyribaBBL - Monitoring - kyriba
BBL - Monitoring - kyribaOlivier BAZOUD
 
Hadoop et son écosystème - v2
Hadoop et son écosystème - v2Hadoop et son écosystème - v2
Hadoop et son écosystème - v2Khanh Maudoux
 
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...Sébastien Prunier
 
Comment gérer des applications nécessitant la persistance des données avec Ku...
Comment gérer des applications nécessitant la persistance des données avec Ku...Comment gérer des applications nécessitant la persistance des données avec Ku...
Comment gérer des applications nécessitant la persistance des données avec Ku...Florian Woerner
 
Pachyderm big data de l'ère docker
Pachyderm big data de l'ère dockerPachyderm big data de l'ère docker
Pachyderm big data de l'ère dockerEnguerran Delahaie
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Saïd Bouras
 
Réduire la taille de son apk
Réduire la taille de son apkRéduire la taille de son apk
Réduire la taille de son apkJacques GIRAUDEL
 
XebiCon'16 : WeScale - DNS as a Service, the OpenStack way. Par Pascal Edoua...
XebiCon'16 : WeScale - DNS as a Service, the OpenStack way.  Par Pascal Edoua...XebiCon'16 : WeScale - DNS as a Service, the OpenStack way.  Par Pascal Edoua...
XebiCon'16 : WeScale - DNS as a Service, the OpenStack way. Par Pascal Edoua...Publicis Sapient Engineering
 
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...Sébastien Prunier
 
Elasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésElasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésMathieu Elie
 

Tendances (20)

Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalités
 
Journée DevOps : Tests de performance en continu
Journée DevOps : Tests de performance en continuJournée DevOps : Tests de performance en continu
Journée DevOps : Tests de performance en continu
 
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
 
Cassandra pour les développeurs java
Cassandra pour les développeurs javaCassandra pour les développeurs java
Cassandra pour les développeurs java
 
Des cas d'intégration client par Sword: XL Airways, Ministere de la Culture...
Des cas d'intégration client par Sword: XL Airways, Ministere de la Culture...Des cas d'intégration client par Sword: XL Airways, Ministere de la Culture...
Des cas d'intégration client par Sword: XL Airways, Ministere de la Culture...
 
Découverte de Redis
Découverte de RedisDécouverte de Redis
Découverte de Redis
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocution
 
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
 
Scalabilité de MongoDB
Scalabilité de MongoDBScalabilité de MongoDB
Scalabilité de MongoDB
 
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
[Breizhcamp 2015] Refactoring avec 1,22% de code couvert par les tests ... Go...
 
BBL - Monitoring - kyriba
BBL - Monitoring - kyribaBBL - Monitoring - kyriba
BBL - Monitoring - kyriba
 
Hadoop et son écosystème - v2
Hadoop et son écosystème - v2Hadoop et son écosystème - v2
Hadoop et son écosystème - v2
 
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
 
Comment gérer des applications nécessitant la persistance des données avec Ku...
Comment gérer des applications nécessitant la persistance des données avec Ku...Comment gérer des applications nécessitant la persistance des données avec Ku...
Comment gérer des applications nécessitant la persistance des données avec Ku...
 
Pachyderm big data de l'ère docker
Pachyderm big data de l'ère dockerPachyderm big data de l'ère docker
Pachyderm big data de l'ère docker
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017
 
Réduire la taille de son apk
Réduire la taille de son apkRéduire la taille de son apk
Réduire la taille de son apk
 
XebiCon'16 : WeScale - DNS as a Service, the OpenStack way. Par Pascal Edoua...
XebiCon'16 : WeScale - DNS as a Service, the OpenStack way.  Par Pascal Edoua...XebiCon'16 : WeScale - DNS as a Service, the OpenStack way.  Par Pascal Edoua...
XebiCon'16 : WeScale - DNS as a Service, the OpenStack way. Par Pascal Edoua...
 
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...
 
Elasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésElasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautés
 

Similaire à Modern DevOps - kill the bottleneck (part 1/2)

Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Microsoft
 
Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. ...
Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. ...Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. ...
Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. ...Alexis Kinsella
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Cellenza
 
BreizhCamp 2022
BreizhCamp 2022BreizhCamp 2022
BreizhCamp 2022SpikeeLabs
 
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...Capgemini
 
[Oldies] Club client D2SI : DevOps
[Oldies] Club client D2SI : DevOps [Oldies] Club client D2SI : DevOps
[Oldies] Club client D2SI : DevOps Devoteam Revolve
 
Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?Steven VAN POECK
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxMarc Bojoly
 
De l'open source à l'open API avec Restlet
De l'open source à l'open API avec RestletDe l'open source à l'open API avec Restlet
De l'open source à l'open API avec RestletJerome Louvel
 
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...Modern Data Stack France
 
Meet up paris 13 of jun 2017
Meet up paris 13 of jun 2017Meet up paris 13 of jun 2017
Meet up paris 13 of jun 2017Jasmine Conseil
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)Restlet
 
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDBPlus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDBMongoDB
 
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDBPlus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDBPierre-Alban DEWITTE
 
Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Sébastien Le Marchand
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureThomas Conté
 
Retour AFUP du forumphp 2017
Retour AFUP du forumphp 2017Retour AFUP du forumphp 2017
Retour AFUP du forumphp 2017AFUP_Limoges
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 

Similaire à Modern DevOps - kill the bottleneck (part 1/2) (20)

Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
 
vNext
vNextvNext
vNext
 
Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. ...
Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. ...Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. ...
Devoxx france 2015 - Intégrer et exploiter le format de données ouvert GTFS. ...
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 
BreizhCamp 2022
BreizhCamp 2022BreizhCamp 2022
BreizhCamp 2022
 
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
CWIN17 Morocco / Microsoft re-invent .net with the future in mind amine belha...
 
[Oldies] Club client D2SI : DevOps
[Oldies] Club client D2SI : DevOps [Oldies] Club client D2SI : DevOps
[Oldies] Club client D2SI : DevOps
 
Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?Etes vous prêts pour le succes ?
Etes vous prêts pour le succes ?
 
Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptx
 
De l'open source à l'open API avec Restlet
De l'open source à l'open API avec RestletDe l'open source à l'open API avec Restlet
De l'open source à l'open API avec Restlet
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
 
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
 
Meet up paris 13 of jun 2017
Meet up paris 13 of jun 2017Meet up paris 13 of jun 2017
Meet up paris 13 of jun 2017
 
De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)De l'Open Source à l'Open API (in French)
De l'Open Source à l'Open API (in French)
 
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDBPlus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
 
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDBPlus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
 
Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
 
Retour AFUP du forumphp 2017
Retour AFUP du forumphp 2017Retour AFUP du forumphp 2017
Retour AFUP du forumphp 2017
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 

Plus de Loic Ortola

Map as a Service OVH Summit 2016
Map as a Service OVH Summit 2016Map as a Service OVH Summit 2016
Map as a Service OVH Summit 2016Loic Ortola
 
Jawg maurice vs google maps
Jawg   maurice vs google mapsJawg   maurice vs google maps
Jawg maurice vs google mapsLoic Ortola
 
Native vs Hybrid - Options to develop your mobile application
Native vs Hybrid - Options to develop your mobile applicationNative vs Hybrid - Options to develop your mobile application
Native vs Hybrid - Options to develop your mobile applicationLoic Ortola
 
Bringing Openstreetmap Mobile edition to the next level
Bringing Openstreetmap Mobile edition to the next levelBringing Openstreetmap Mobile edition to the next level
Bringing Openstreetmap Mobile edition to the next levelLoic Ortola
 
CatDroid talk: thinking different, sharing ideas
CatDroid talk: thinking different, sharing ideasCatDroid talk: thinking different, sharing ideas
CatDroid talk: thinking different, sharing ideasLoic Ortola
 

Plus de Loic Ortola (6)

The rise of JS
The rise of JSThe rise of JS
The rise of JS
 
Map as a Service OVH Summit 2016
Map as a Service OVH Summit 2016Map as a Service OVH Summit 2016
Map as a Service OVH Summit 2016
 
Jawg maurice vs google maps
Jawg   maurice vs google mapsJawg   maurice vs google maps
Jawg maurice vs google maps
 
Native vs Hybrid - Options to develop your mobile application
Native vs Hybrid - Options to develop your mobile applicationNative vs Hybrid - Options to develop your mobile application
Native vs Hybrid - Options to develop your mobile application
 
Bringing Openstreetmap Mobile edition to the next level
Bringing Openstreetmap Mobile edition to the next levelBringing Openstreetmap Mobile edition to the next level
Bringing Openstreetmap Mobile edition to the next level
 
CatDroid talk: thinking different, sharing ideas
CatDroid talk: thinking different, sharing ideasCatDroid talk: thinking different, sharing ideas
CatDroid talk: thinking different, sharing ideas
 

Modern DevOps - kill the bottleneck (part 1/2)

  • 1. © Copyright 2017 resourcepool 1 Performance Tuning Kill the Bottleneck Loïc Ortola
  • 2. © Copyright 2017 resourcepool 2 Loïc Ortola CTO @ jawg Loïc Ortola @LoicOrtola loic@jawg.io DevOps– Archi – Dev Fullstack Java – Node.js – Angular/React – Android – IoT
  • 3. © Copyright 2017 resourcepool 3 Wonderland Les mensonges de l’IT
  • 4. © Copyright 2017 resourcepool 4 Unlimited Resources no bottleneck, no hardware failure, no latency
  • 5. © Copyright 2017 resourcepool 5 Scalability is assumed All technologies are easily scalable Languages & platforms do not matter
  • 6. © Copyright 2017 resourcepool 6 And it’s for free
  • 7. © Copyright 2017 resourcepool 7
  • 8. © Copyright 2017 resourcepool 8 Welcome to Wonderland
  • 9. © Copyright 2017 resourcepool 9 Limited Resources One or more bottlenecks, multiple hardware failures, latency
  • 10. © Copyright 2017 resourcepool 10 Quels sont les différents bottlenecks usuels?
  • 11. © Copyright 2017 resourcepool 11 Bottlenecks and time-units •  CPU •  cycle horloge ~ 0.3 ns •  Mémoire •  cycle horloge * CAS latency ~ 15 ns •  ~20 gbps throughput •  Network: •  latency ~ 10 ms •  ~100 mbps throughput
  • 12. © Copyright 2017 resourcepool 12 Bottlenecks and time-units •  NVME: •  R/W d’un bloc ~ 5 us •  ~ 300k IOPS •  ~ 10 gbps throughput •  SSD: •  R/W d’un bloc ~ 100 us •  ~ 50k IOPS •  ~ 5 gbps throughput •  HDD: •  R/W d’un bloc ~ 10 ms •  ~ 150 IOPS •  ~ 400 mbps throughput
  • 13. © Copyright 2017 resourcepool 13 “Mais non, t’inquiète, ca marchera” Failures & Latency
  • 14. © Copyright 2017 resourcepool 14 Failures
  • 15. © Copyright 2017 resourcepool 15 Latency •  Touche tous les niveaux d’une infrastructure •  Dépend de nombreux facteurs •  Peut souvent entrainer des erreurs en cascade
  • 16. © Copyright 2017 resourcepool 16 Scalability is non-trivial V vs H scaling, clustering, sharding
  • 17. © Copyright 2017 resourcepool 17 Lois Universelles du scaling •  La scalabilité verticale est toujours utile à considérer •  Ajouter un noeud a toujours un cout •  New point of failure •  Adds management costs •  Adds app & architecture complexity
  • 18. © Copyright 2017 resourcepool 18 Technologies •  Relational Databases & ACID •  Clustering enabled technologies •  Sessions, Websockets & technologies connectées
  • 19. © Copyright 2017 resourcepool 19 Comprendre les règles Pour mieux les contourner
  • 20. © Copyright 2017 resourcepool 20 Le chemin complet
  • 21. © Copyright 2017 resourcepool 21 Le chemin complet •  DNS •  Socket binding, read, app connector •  Business Logic •  DB •  Business Logic •  Socket write •  Close
  • 22. © Copyright 2017 resourcepool 22 Load-testing Make the invisible visible
  • 23. © Copyright 2017 resourcepool 23 Les bottlenecks potentiels •  Trop de charge sur la DB è IO / CPU / RAM •  Stratégie d’écriture des Logs •  Bande passante •  Développement applicatif •  Dimensionnement pool de connexions •  Dimensionnement worker-pool •  Dimensionnement heap / JVM •  Garbage collection •  Conf Kernel
  • 24. © Copyright 2017 resourcepool 24 Mo-ni-to-ring
  • 25. © Copyright 2017 resourcepool 25 Système htop : CPU / RAM iostat / iotop : I/O netstat: Sockets / connections
  • 26. © Copyright 2017 resourcepool 26 Applicatif VisualVM: Threads / Heap / CPU / GC
  • 27. © Copyright 2017 resourcepool 27 DB •  Logger les requêtes lentes •  Monitorer les temps d’exécution slow_query_log=1 slow_query_log_file=/var/log/mysql/mysql-slow.log
  • 28. © Copyright 2017 resourcepool 28 Les injecteurs •  Percentiles des temps de réponse •  Connections concurrentes •  Utilisateurs concurrents
  • 29. © Copyright 2017 resourcepool 29 Les optimisations
  • 30. © Copyright 2017 resourcepool 30 La Conf! •  Optimiser les tailles de pools •  Configurer sa JVM (GC, Heap-size, triggers, etc…) •  Configurer ses logs (async-flush) •  Fine-tuner sa DB •  Fine-tuner son OS
  • 31. © Copyright 2017 resourcepool 31 La DB •  Optimiser les requêtes •  Indexer différemment •  Sharder / Clusteriser / Changer de DB?
  • 32. © Copyright 2017 resourcepool 32 L’application •  Résoudre les bugs •  Limiter la création d’objets (buffers ou object-pools) •  Limiter la copie •  Utiliser du cache mémoire •  Optimiser l’utilisation des threads •  Devenir non-bloquant au possible •  Changer de technologie ?
  • 33. © Copyright 2017 resourcepool 33 L’architecture •  Scaler intelligemment •  Répartir la charge •  Sharder / clusteriser •  Ajouter des niveaux de cache •  Répartir sur des régions + Anycast DNS
  • 34. © Copyright 2017 resourcepool 34 Test-case : Jawg Maps