SlideShare une entreprise Scribd logo
{   FORUM PHP Paris 2009



             Monitoring
d'applications/environnements PHP :
            APM et Pinba

       Davide Mendolia - Patrick Allaert
{          Davide Mendolia
●   http://davidemendolia.blogspot.com/
●   dmendolia@php.net ou
    @davideme (Twitter)
●   Développeur principal APM.
●   Contributeur de php-benchmark.
●   http://www.php-ci.net/
●   Travaille chez Tuenti.
{
●   Réseau social, basé à Madrid.
●   Plus de 20 milliards de pages vues/mois.
●   Premier site web espagnol devant Google,
    Microsoft et Facebook (Comscore).
●   Environnement de travail international
    (15 différentes nationalités).
●   On recherche des développeurs!!!
{            Patrick Allaert
●   http://patrickallaert.blogspot.com/
●   patrickallaert@php.net ou
    @patrick_allaert (Twitter)
●   Développeur principal APM.
●   Travaille chez eZ Systems (eZ Publish,
    eZ Components).
●   Organisateur PHPBenelux
    (http://www.phpbenelux.eu/).
{
●
                Patrick Allaert
    Démarre la programmation avec PHP 3.
●   Dix ans d'évangélisme sur le Logiciel
    Libre.
●   Contributions à :
    ●   PHP (ext/ldap, QA : PHPT),
    ●   KDESvn (client Subversion pour KDE),
    ●   XOo°f (eXtensible Open Object
        Oriented Framework),
    ●   Tabellio (suite collaborative pour
        assemblée parlementaire).
{       Monitoring : Définition ?
●   Activité de surveillance et de mesure.
●   Domaines :
    ●   l'état physique d'une machine;
    ●   la charge d'une machine;
    ●   disponibilité applicative;
    ●   les messages inscrits en logs systèmes;
    ●   les performances du réseau;
    ●   les attaques connues.
{    Monitoring : Pourquoi ?
●   Besoin en terme de disponibilité
    grandissant.
●   Souci d'économie.
●   Expérience utilisateur.
{   Monitoring : Pourquoi ?
                           « Quand j'arrive sur la page d'accueil
                           j'ai une page blanche […] »


« Sérieux? Un moment, je regarde […] »


« Ho, oui, vous avez raison!? »



« Nous sommes au courant du problème,
nos ingénieurs ont trouvés la solution.
Tout sera rentré dans l'ordre dans
5 minutes »
{
Monitoring: Présentation
Monitoring du P de LAMP.


En particulier :
●   gestion d'erreurs en PHP,
●   performance d'exécution.
{
Quelles sont les solutions ?
●   Actuelles :
    ●   PHP;
    ●   Zend Platform.
●   Nouveaux venus :
    ●   APM (Alternative PHP Monitor);
    ●   Pinba.
{   PHP : fonctions intégrées
●   error_reporting;
●   display_errors;
●   error_log;
    ●   fichier,
    ●   syslog,
        –   Windows => journal d'évènements;
●   set_error_handler().
{           Zend Platform
Solution commerciale tout-en-un de Zend.
Comprend :
●   monitoring;
●   performance;
●   haute disponibilité;
●   …
{                   APM
●   Alternative PHP Monitor.
●   http://code.google.com/p/peclapm/
●   @php_apm (Twitter)
●   Liste de diffusion :
    apm-dev@googlegroups.com
●   Dédié au monitoring d'erreurs.
●   Naissance en septembre-octobre 2008.
{
    Démo APM !
{             Pourquoi ?
●   LAMP + APC + Xdebug + APM (LAMPAXA)
●   Brique manquante dans le paysage du
    logiciel libre.
●   Problèmes de performance indirectement
    lié à la Zend Platform, besoin d'une
    solution à l'impact minimum.
{   Architecture
{          Base de données

           event            slow_request
    id          INTEGER   id      INTEGER
    ts          TEXT      ts      TEXT
    type        INTEGER   duration FLOAT
    file        TEXT      file    TEXT
    line        INTEGER
    message     TEXT
    backtrace   TEXT
{           Fonctions PHP
●   void apm_get_events(void)
     Imprime une table HTML remplie des
     évènements enregistrés dans la base de
     données en ordre inverse.
●   void apm_get_slow_requests(void)
     Imprime une table HTML remplie des
     requêtes lentes enregistrées dans la base
     de données en ordre inverse.
{                       Futur
●   Déclencheurs :
    ●   SNMP;
    ●   courrier électronique;
    ●   commande paramétrée.
●   Backends alternatifs à SQLite :
    ●   MySQL;
    ●   Memcache;
    ●   Tokyo Tyrant.
{   Appel à contribution
{                   Pinba
●   PHP is not a bottleneck anymore.
●   http://pinba.org/
●   Liste de diffusion :
    pinba-engine@googlegroups.com.
●   Dédié au monitoring de performance en
    temps réel.
●   Naissance en 2009.
{              Pourquoi ?
●   LAMP + APC + Xdebug + APM + Pinba
●   LAMPAXAP
●   Brique manquante dans le paysage PHP.
●   Collecte de statistiques de performance
    dans un environnement de production.
{   Architecture
{
Démo Pinba « par défaut » !
{
●
             Données envoyées
    string hostname – résultat de gethostname();
●   int request_count – numéro de la requête servie par le processus;
●   string server_name – $_SERVER["SERVER_NAME"];
●   string script_name – $_SERVER["SCRIPT_NAME"];
●   int document_size – taille de la réponse;
●   int memory_peak – pic d'allocation mémoire;
●   float request_time – temps passé à traiter la requête;
●   float ru_utime – utilisation de ressource (utilisateur);
●   float ru_stime – utilisation de ressource (système);
●   array timers – tableau de timers (optionnel).
{
    Démo Pinba « timers » !
{
●
                Fonctions PHP
    resource pinba_timer_start(array tags[, array
    data])
      Crée et démarre un nouveau timer.
●   bool pinba_timer_stop(resource timer)
      Arrête un timer.
●   bool pinba_timers_stop(void)
      Arrête tous les timers.
●   bool pinba_script_name_set(string script_name)
      Défini un nom de script à la place de
      $_SERVER['SCRIPT_NAME'] utilisé par défaut.
{
●
               Fonctions PHP
    array pinba_timer_get_info(resource timer)
      Retourne les données liées à un timer.
      Exemple:
      array(4) {
        ["value"]=>float(0.0213)
        ["tags"]=>array(1) {
          ["foo"]=>string(3) "bar"
        }
        ["started"]=>bool(true)
        ["data"]=>NULL
      }
{
●
                 Fonctions PHP
    array pinba_get_info(void)
      Retourne toutes les données liées à Pinba.
      Exemple:
      array(9) {
        ["mem_peak_usage"]=> int(786432)
        ["req_time"]=> float(0.001529)
        ["ru_utime"]=> float(0)
        ["ru_stime"]=> float(0)
        ["req_count"]=> int(1)
        ["doc_size"]=> int(0)
        ["server_name"]=> string(7) "unknown"
        ["script_name"]=> string(1) "-"
        ["timers"]=> array(1) {
          [0]=> array(4) {
            [...]
          }
        }
      }
{                 Tables
Le plugin Pinba fourni deux types de
tables :
●   tables de données brutes;
●   rapports.
{
●
    Tables de données brutes
    request :
    ●   enregistre toutes les données,
    ●   buffer circulaire d'une taille donnée;
●   timer :
    ●   enregistre les données relatives aux timers;
●   tag :
    ●   enregistre de manière unique les tags;
●   timertag :
    ●   enregistre l'association entre tags et timers.
{
●   info;
                  Rapports

●   report_by_script_name;
●   report_by_server_name;
●   report_by_hostname;
●   report_by_server_and_script;
●   report_by_hostname_and_script;
●   report_by_hostname_and_server;
●   report_by_hostname_server_and_script.
{
●
        Champs des rapports
    req_count;          ●   ru_stime_total;
●   req_per_sec;        ●   ru_stime_percent;
●   req_time_total;     ●   ru_stime_per_sec;
●   req_time_percent;   ●   traffic_total;
●   req_time_per_sec;   ●   traffic_percent;
●   ru_utime_total;     ●   traffic_per_sec.
●   ru_utime_percent;
●   ru_utime_per_sec;
{      Rapports des tag(s)
Deux types de rapports :
●   « tag info »;
●   « tag report ».
Chacun d'eux étant disponibles en deux
versions :
●   pour 1 tag;
●   pour 2 tags.
{      Tag info pour 1 tag
Données des timers regroupées par la
valeur d'un tag spécifié.
CREATE TABLE `tag_info_foo` (
  `tag_value` varchar(32) DEFAULT NULL,
  `req_count` int(11) DEFAULT NULL,
  `hit_count` int(11) DEFAULT NULL,
  `timer_value` float DEFAULT NULL
) ENGINE=PINBA DEFAULT CHARSET=latin1
COMMENT='tag_info:foo'
{     Tag info pour 2 tags
Données des timers regroupées par la
valeur de deux tags spécifiés.
CREATE TABLE `tag_info_foo_bar` (
  `foo_value` varchar(32) DEFAULT NULL,
  `bar_value` varchar(32) DEFAULT NULL,
  `req_count` int(11) DEFAULT NULL,
  `hit_count` int(11) DEFAULT NULL,
  `timer_value` float DEFAULT NULL
) ENGINE=PINBA DEFAULT CHARSET=latin1
COMMENT='tag2_info:foo,bar'
{    Tag report pour 1 tag
Données des timers regroupées par script
et par la valeur d'un tag spécifié.
CREATE TABLE `tag_report_foo` (
  `script_name` varchar(128) DEFAULT NULL,
  `tag_value` varchar(32) DEFAULT NULL,
  `req_count` int(11) DEFAULT NULL,
  `hit_count` int(11) DEFAULT NULL,
  `timer_value` float DEFAULT NULL
) ENGINE=PINBA DEFAULT CHARSET=latin1
COMMENT='tag_report:foo'
{    Tag report pour 2 tags
Données des timers regroupées par script
et par la valeur de deux tags spécifiés.
CREATE TABLE `tag_report_foo_bar` (
  `script_name` varchar(128) DEFAULT NULL,
  `tag1_value` varchar(32) DEFAULT NULL,
  `tag2_value` varchar(32) DEFAULT NULL,
  `req_count` int(11) DEFAULT NULL,
  `hit_count` int(11) DEFAULT NULL,
  `timer_value` float DEFAULT NULL
) ENGINE=PINBA DEFAULT CHARSET=latin1
COMMENT='tag2_report:foo,bar'
{             Performance
●   Overhead +/- 2 µs/requête sur un
    portable;
●   invariable de la disponibilité de MySQL
    (rappel: protocole UDP).
{                  Crédits
●   Andrei Nigmatulin - initial design and first
    implementation.
●   Alexey Rybak - design, ideas and lots of
    (useful) critics.
●   Special thanks to Sergey Frolovichev.
●   Current implementation is done by
    Antony Dovgal.
{
    Questions ?

Contenu connexe

PPT
PFE PSA Peugeot Citroen - Prototypage rapide
ODP
Monitoring d'applications/environnements PHP: APM et Pinba
PDF
Développement informatique : Gestion de projet, versioning, debugging, testin...
PDF
BackDay Xebia : Découvrez RxJava, le reactive programming
PPTX
SdE 8 - Synchronization de execution
ODP
Coat::Persistent at FPW2009
PPTX
The Future of Javascript
PPTX
Présentation Javascript à l'ESI (Alger)
PFE PSA Peugeot Citroen - Prototypage rapide
Monitoring d'applications/environnements PHP: APM et Pinba
Développement informatique : Gestion de projet, versioning, debugging, testin...
BackDay Xebia : Découvrez RxJava, le reactive programming
SdE 8 - Synchronization de execution
Coat::Persistent at FPW2009
The Future of Javascript
Présentation Javascript à l'ESI (Alger)

En vedette (20)

ODP
Pourquoi la documentation compte ?
PPT
Utilisation d’eZ Flow sur le site www.kaliop.fr
PDF
Deployment of a multi-site platform
PDF
Ezpub formation-ezpublish
PPTX
Présentation générale eZ Publish
PPTX
Présentation eZ Publish - PHP Québec
PPT
Présentation EZ Systems
PDF
EZ Systems - EZ publish, la plate-forme de gestion de contenu web de nouvell...
PDF
eZ publish - Publication instantanée et fort trafic web
PPTX
Redeploiement d’une plateforme eZpublish multisites internationale
PPT
Présentation eZ publish
PDF
Nicolas Pastorino - Distribution de contenu scalable, le multicanal avec REST...
PDF
Réutilisabilité du code PHP
PPTX
5 idées pour transformer votre contenu en business
PDF
Livre blanc Smile - Le meilleur des CMS open source
PPT
Matinale eZ Publish : la personnalisation dynamique
PDF
Soirée Qualité Logicielle avec Sonar
PPTX
Connecteur eZ Publish/ Magento
PDF
Réalisation d’une plateforme e-commerce de vente de prestations HTML dotée d...
PDF
Webinar e-tourisme : Créer une expérience utilisateur riche grâce à eZ Publish
Pourquoi la documentation compte ?
Utilisation d’eZ Flow sur le site www.kaliop.fr
Deployment of a multi-site platform
Ezpub formation-ezpublish
Présentation générale eZ Publish
Présentation eZ Publish - PHP Québec
Présentation EZ Systems
EZ Systems - EZ publish, la plate-forme de gestion de contenu web de nouvell...
eZ publish - Publication instantanée et fort trafic web
Redeploiement d’une plateforme eZpublish multisites internationale
Présentation eZ publish
Nicolas Pastorino - Distribution de contenu scalable, le multicanal avec REST...
Réutilisabilité du code PHP
5 idées pour transformer votre contenu en business
Livre blanc Smile - Le meilleur des CMS open source
Matinale eZ Publish : la personnalisation dynamique
Soirée Qualité Logicielle avec Sonar
Connecteur eZ Publish/ Magento
Réalisation d’une plateforme e-commerce de vente de prestations HTML dotée d...
Webinar e-tourisme : Créer une expérience utilisateur riche grâce à eZ Publish
Publicité

Similaire à Monitoring d'applications/environnements PHP : APM et Pinba (20)

PPTX
Développer et déployer une application php maintenable
PDF
Base donnes my_sql
POTX
Soutenance
PPTX
S2-01-PHP.pptx
PPT
Presentation d'un cour de language avencer php.ppt
PPT
PDF
Ecrire et déployer une appli PHP maintenable
PDF
Trucs et astuces PHP et MySQL
PPTX
PHP : écrire et déployer des applications maintenables !
PPT
PHP_partie_.ppt,php_cours_mathematiques_informatiques
PPTX
PPTX
Monitoring applicatif : Pourquoi et comment ?
PDF
Zabbix, garder un oeil toujours ouvert
PPTX
Suivi qualité avec sonar pour php
PPTX
Php & My Sql
PPTX
Php & My Sql
PDF
PDF
My sql
PPTX
Mise en place du Chattoon en PHP
Développer et déployer une application php maintenable
Base donnes my_sql
Soutenance
S2-01-PHP.pptx
Presentation d'un cour de language avencer php.ppt
Ecrire et déployer une appli PHP maintenable
Trucs et astuces PHP et MySQL
PHP : écrire et déployer des applications maintenables !
PHP_partie_.ppt,php_cours_mathematiques_informatiques
Monitoring applicatif : Pourquoi et comment ?
Zabbix, garder un oeil toujours ouvert
Suivi qualité avec sonar pour php
Php & My Sql
Php & My Sql
My sql
Mise en place du Chattoon en PHP
Publicité

Monitoring d'applications/environnements PHP : APM et Pinba

  • 1. { FORUM PHP Paris 2009 Monitoring d'applications/environnements PHP : APM et Pinba Davide Mendolia - Patrick Allaert
  • 2. { Davide Mendolia ● http://davidemendolia.blogspot.com/ ● dmendolia@php.net ou @davideme (Twitter) ● Développeur principal APM. ● Contributeur de php-benchmark. ● http://www.php-ci.net/ ● Travaille chez Tuenti.
  • 3. { ● Réseau social, basé à Madrid. ● Plus de 20 milliards de pages vues/mois. ● Premier site web espagnol devant Google, Microsoft et Facebook (Comscore). ● Environnement de travail international (15 différentes nationalités). ● On recherche des développeurs!!!
  • 4. { Patrick Allaert ● http://patrickallaert.blogspot.com/ ● patrickallaert@php.net ou @patrick_allaert (Twitter) ● Développeur principal APM. ● Travaille chez eZ Systems (eZ Publish, eZ Components). ● Organisateur PHPBenelux (http://www.phpbenelux.eu/).
  • 5. { ● Patrick Allaert Démarre la programmation avec PHP 3. ● Dix ans d'évangélisme sur le Logiciel Libre. ● Contributions à : ● PHP (ext/ldap, QA : PHPT), ● KDESvn (client Subversion pour KDE), ● XOo°f (eXtensible Open Object Oriented Framework), ● Tabellio (suite collaborative pour assemblée parlementaire).
  • 6. { Monitoring : Définition ? ● Activité de surveillance et de mesure. ● Domaines : ● l'état physique d'une machine; ● la charge d'une machine; ● disponibilité applicative; ● les messages inscrits en logs systèmes; ● les performances du réseau; ● les attaques connues.
  • 7. { Monitoring : Pourquoi ? ● Besoin en terme de disponibilité grandissant. ● Souci d'économie. ● Expérience utilisateur.
  • 8. { Monitoring : Pourquoi ? « Quand j'arrive sur la page d'accueil j'ai une page blanche […] » « Sérieux? Un moment, je regarde […] » « Ho, oui, vous avez raison!? » « Nous sommes au courant du problème, nos ingénieurs ont trouvés la solution. Tout sera rentré dans l'ordre dans 5 minutes »
  • 9. { Monitoring: Présentation Monitoring du P de LAMP. En particulier : ● gestion d'erreurs en PHP, ● performance d'exécution.
  • 10. { Quelles sont les solutions ? ● Actuelles : ● PHP; ● Zend Platform. ● Nouveaux venus : ● APM (Alternative PHP Monitor); ● Pinba.
  • 11. { PHP : fonctions intégrées ● error_reporting; ● display_errors; ● error_log; ● fichier, ● syslog, – Windows => journal d'évènements; ● set_error_handler().
  • 12. { Zend Platform Solution commerciale tout-en-un de Zend. Comprend : ● monitoring; ● performance; ● haute disponibilité; ● …
  • 13. { APM ● Alternative PHP Monitor. ● http://code.google.com/p/peclapm/ ● @php_apm (Twitter) ● Liste de diffusion : apm-dev@googlegroups.com ● Dédié au monitoring d'erreurs. ● Naissance en septembre-octobre 2008.
  • 14. { Démo APM !
  • 15. { Pourquoi ? ● LAMP + APC + Xdebug + APM (LAMPAXA) ● Brique manquante dans le paysage du logiciel libre. ● Problèmes de performance indirectement lié à la Zend Platform, besoin d'une solution à l'impact minimum.
  • 16. { Architecture
  • 17. { Base de données event slow_request id INTEGER id INTEGER ts TEXT ts TEXT type INTEGER duration FLOAT file TEXT file TEXT line INTEGER message TEXT backtrace TEXT
  • 18. { Fonctions PHP ● void apm_get_events(void) Imprime une table HTML remplie des évènements enregistrés dans la base de données en ordre inverse. ● void apm_get_slow_requests(void) Imprime une table HTML remplie des requêtes lentes enregistrées dans la base de données en ordre inverse.
  • 19. { Futur ● Déclencheurs : ● SNMP; ● courrier électronique; ● commande paramétrée. ● Backends alternatifs à SQLite : ● MySQL; ● Memcache; ● Tokyo Tyrant.
  • 20. { Appel à contribution
  • 21. { Pinba ● PHP is not a bottleneck anymore. ● http://pinba.org/ ● Liste de diffusion : pinba-engine@googlegroups.com. ● Dédié au monitoring de performance en temps réel. ● Naissance en 2009.
  • 22. { Pourquoi ? ● LAMP + APC + Xdebug + APM + Pinba ● LAMPAXAP ● Brique manquante dans le paysage PHP. ● Collecte de statistiques de performance dans un environnement de production.
  • 23. { Architecture
  • 24. { Démo Pinba « par défaut » !
  • 25. { ● Données envoyées string hostname – résultat de gethostname(); ● int request_count – numéro de la requête servie par le processus; ● string server_name – $_SERVER["SERVER_NAME"]; ● string script_name – $_SERVER["SCRIPT_NAME"]; ● int document_size – taille de la réponse; ● int memory_peak – pic d'allocation mémoire; ● float request_time – temps passé à traiter la requête; ● float ru_utime – utilisation de ressource (utilisateur); ● float ru_stime – utilisation de ressource (système); ● array timers – tableau de timers (optionnel).
  • 26. { Démo Pinba « timers » !
  • 27. { ● Fonctions PHP resource pinba_timer_start(array tags[, array data]) Crée et démarre un nouveau timer. ● bool pinba_timer_stop(resource timer) Arrête un timer. ● bool pinba_timers_stop(void) Arrête tous les timers. ● bool pinba_script_name_set(string script_name) Défini un nom de script à la place de $_SERVER['SCRIPT_NAME'] utilisé par défaut.
  • 28. { ● Fonctions PHP array pinba_timer_get_info(resource timer) Retourne les données liées à un timer. Exemple: array(4) { ["value"]=>float(0.0213) ["tags"]=>array(1) { ["foo"]=>string(3) "bar" } ["started"]=>bool(true) ["data"]=>NULL }
  • 29. { ● Fonctions PHP array pinba_get_info(void) Retourne toutes les données liées à Pinba. Exemple: array(9) { ["mem_peak_usage"]=> int(786432) ["req_time"]=> float(0.001529) ["ru_utime"]=> float(0) ["ru_stime"]=> float(0) ["req_count"]=> int(1) ["doc_size"]=> int(0) ["server_name"]=> string(7) "unknown" ["script_name"]=> string(1) "-" ["timers"]=> array(1) { [0]=> array(4) { [...] } } }
  • 30. { Tables Le plugin Pinba fourni deux types de tables : ● tables de données brutes; ● rapports.
  • 31. { ● Tables de données brutes request : ● enregistre toutes les données, ● buffer circulaire d'une taille donnée; ● timer : ● enregistre les données relatives aux timers; ● tag : ● enregistre de manière unique les tags; ● timertag : ● enregistre l'association entre tags et timers.
  • 32. { ● info; Rapports ● report_by_script_name; ● report_by_server_name; ● report_by_hostname; ● report_by_server_and_script; ● report_by_hostname_and_script; ● report_by_hostname_and_server; ● report_by_hostname_server_and_script.
  • 33. { ● Champs des rapports req_count; ● ru_stime_total; ● req_per_sec; ● ru_stime_percent; ● req_time_total; ● ru_stime_per_sec; ● req_time_percent; ● traffic_total; ● req_time_per_sec; ● traffic_percent; ● ru_utime_total; ● traffic_per_sec. ● ru_utime_percent; ● ru_utime_per_sec;
  • 34. { Rapports des tag(s) Deux types de rapports : ● « tag info »; ● « tag report ». Chacun d'eux étant disponibles en deux versions : ● pour 1 tag; ● pour 2 tags.
  • 35. { Tag info pour 1 tag Données des timers regroupées par la valeur d'un tag spécifié. CREATE TABLE `tag_info_foo` ( `tag_value` varchar(32) DEFAULT NULL, `req_count` int(11) DEFAULT NULL, `hit_count` int(11) DEFAULT NULL, `timer_value` float DEFAULT NULL ) ENGINE=PINBA DEFAULT CHARSET=latin1 COMMENT='tag_info:foo'
  • 36. { Tag info pour 2 tags Données des timers regroupées par la valeur de deux tags spécifiés. CREATE TABLE `tag_info_foo_bar` ( `foo_value` varchar(32) DEFAULT NULL, `bar_value` varchar(32) DEFAULT NULL, `req_count` int(11) DEFAULT NULL, `hit_count` int(11) DEFAULT NULL, `timer_value` float DEFAULT NULL ) ENGINE=PINBA DEFAULT CHARSET=latin1 COMMENT='tag2_info:foo,bar'
  • 37. { Tag report pour 1 tag Données des timers regroupées par script et par la valeur d'un tag spécifié. CREATE TABLE `tag_report_foo` ( `script_name` varchar(128) DEFAULT NULL, `tag_value` varchar(32) DEFAULT NULL, `req_count` int(11) DEFAULT NULL, `hit_count` int(11) DEFAULT NULL, `timer_value` float DEFAULT NULL ) ENGINE=PINBA DEFAULT CHARSET=latin1 COMMENT='tag_report:foo'
  • 38. { Tag report pour 2 tags Données des timers regroupées par script et par la valeur de deux tags spécifiés. CREATE TABLE `tag_report_foo_bar` ( `script_name` varchar(128) DEFAULT NULL, `tag1_value` varchar(32) DEFAULT NULL, `tag2_value` varchar(32) DEFAULT NULL, `req_count` int(11) DEFAULT NULL, `hit_count` int(11) DEFAULT NULL, `timer_value` float DEFAULT NULL ) ENGINE=PINBA DEFAULT CHARSET=latin1 COMMENT='tag2_report:foo,bar'
  • 39. { Performance ● Overhead +/- 2 µs/requête sur un portable; ● invariable de la disponibilité de MySQL (rappel: protocole UDP).
  • 40. { Crédits ● Andrei Nigmatulin - initial design and first implementation. ● Alexey Rybak - design, ideas and lots of (useful) critics. ● Special thanks to Sergey Frolovichev. ● Current implementation is done by Antony Dovgal.
  • 41. { Questions ?